PHP如何连接MySQL数据库

在PHP中选择数据库,使用MySQLi时调用mysqli_select_db($connection, "db_name")函数,或通过PDO在连接字符串中直接指定数据库名,确保先建立有效数据库连接再执行操作。

在PHP中连接并选择数据库是Web开发的基础操作,正确实现能确保数据交互的安全高效,以下是两种主流方法的详细代码示例和最佳实践:

PHP如何连接MySQL数据库


MySQLi扩展(推荐面向对象方式)

MySQLi支持面向对象和面向过程两种写法,优先推荐面向对象风格。

面向对象写法

<?php
$servername = "localhost";  // 数据库服务器地址
$username = "your_username"; // 数据库用户名
$password = "your_password"; // 数据库密码
$dbname = "target_database"; // 目标数据库名
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "成功连接到数据库: " . $dbname;
// 后续SQL操作(示例)
$sql = "SELECT id FROM users";
$result = $conn->query($sql);
// 关闭连接(非必须,脚本结束自动关闭)
$conn->close();
?>

关键点:

  • 通过new mysqli()构造函数直接指定数据库名。
  • connect_error属性检测连接状态,避免静默失败。
  • 始终验证连接后再执行查询,防止未定义行为。

面向过程写法

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "target_database";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
echo "数据库选择成功";
mysqli_close($conn); // 关闭连接
?>

PDO扩展(支持多数据库)

PDO提供统一的接口,适合需要兼容多种数据库(如MySQL、PostgreSQL)的项目。

PHP如何连接MySQL数据库

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "target_database";
try {
    // 创建PDO实例并指定数据库
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // 设置错误模式为异常捕获
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "PDO连接数据库成功";
    // 示例查询(使用预处理防SQL注入)
    $stmt = $conn->prepare("SELECT * FROM products WHERE category = :cat");
    $stmt->bindValue(':cat', 'electronics');
    $stmt->execute();
} catch(PDOException $e) {
    die("错误: " . $e->getMessage()); // 生产环境应记录日志而非直接输出
}
$conn = null; // 关闭连接
?>

核心优势:

  • try/catch异常处理提升健壮性。
  • 预处理语句(prepare() + bindValue())彻底防御SQL注入。
  • 灵活的ATTR_ERRMODE配置简化调试。

关键安全实践

  1. 禁用明文密码
    • 使用环境变量(如getenv('DB_PASSWORD'))存储密码,避免代码硬编码。
  2. 错误处理
    • 生产环境关闭错误显示:ini_set('display_errors', 0);
    • 记录日志到文件:error_log("Database error", 3, "/path/to/errors.log");
  3. 连接复用

    通过单例模式或依赖注入管理连接,避免重复创建开销。


选择建议

场景 推荐方式
纯MySQL项目 MySQLi面向对象
多数据库支持需求 PDO
遗留系统维护 MySQLi面向过程

官方文档参考:

PHP如何连接MySQL数据库

  • MySQLi文档
  • PDO文档
    本文代码遵循PHP 7.4+语法规范,已通过PHPStan静态检测,实际部署时请替换your_username等占位符,并在生产环境配置SSL加密连接。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/18429.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月10日 17:26
下一篇 2025年6月10日 17:38

相关推荐

  • 电脑数据库启动失败怎么办

    启动电脑数据库服务器失败通常由配置错误、端口占用、权限不足或服务未运行导致,请检查配置文件设置、确保端口未被占用、赋予足够权限并确认相关服务已启动运行,查看错误日志可定位具体原因。

    2025年6月15日
    100
  • 小程序数据库如何快速入门?

    小程序数据库的核心选择小程序数据库开发主要分为三类方案,选择取决于项目需求和技术栈:方案1:微信云开发数据库(官方推荐)适用场景:快速开发、无后端团队、中小型项目核心优势:免运维,自动扩容内置安全规则(JSON配置权限)无缝对接云函数、存储等能力基础操作示例:// 初始化const db = wx.cloud……

    2025年6月9日
    100
  • 金蝶数据库文件如何打开

    金蝶数据库文件(通常是SQL Server的MDF文件)无法直接双击打开,需要使用专业的数据库管理工具(如SQL Server Management Studio)连接并附加该数据库文件进行访问,强烈建议通过金蝶软件本身访问数据,避免直接操作数据库文件。

    2025年6月14日
    000
  • PowerBuilder如何快速实现高效数据库连接

    PowerBuilder通过数据库配置文件或代码配置连接参数,支持ODBC、OLE DB及专用接口等方式,需设置DBMS类型、服务器地址、数据库名、用户身份验证信息,并通过事务对象(如SQLCA)建立连接,执行测试确保连通性后即可进行数据操作。

    2025年5月29日
    300
  • Oracle怎样快速配置数据库连接步骤

    编辑tnsnames.ora文件,添加包含主机、端口、服务名等参数的TNS连接描述符;配置客户端使用该连接名;通过SQL*Plus或工具测试连接即可。

    2025年6月10日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN