PHP数据库连接源码解析

97 阅读2分钟

M

1.1

php
复制编辑
<?php
// 数据库配置信息
$servername = "localhost";  // 数据库服务器地址(通常是 localhost)
$username = "root";        // 数据库用户名
$password = "";            // 数据库密码
$dbname = "test_db";       // 数据库名称

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);  // 如果连接失败,终止脚本并显示错误信息
}
echo "连接成功!";  // 如果连接成功,输出连接成功的信息

// 关闭连接
$conn->close();  // 关闭数据库连接
?>

解析

  • $servername$username$password$dbname:这些变量保存了数据库连接所需要的信息(数据库服务器地址、用户名、密码、数据库名称)。
  • new mysqli() :这行代码创建了一个新的 MySQLi 实例并尝试连接到指定的数据库。MySQLi 类在这里负责处理与 MySQL 数据库的连接。
  • $conn->connect_error:如果连接过程中出现任何错误,connect_error 属性将返回错误信息。我们使用 if 语句检查连接是否成功。如果连接失败,die()
  • $conn->close() :用于关闭数据库连接。这是一个好习惯,有助于释放资源。

1.2 过程化(Procedural)方式

php
复制编辑
<?php
// 数据库配置信息
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 检查连接
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());  // 如果连接失败,终止脚本并显示错误信息
}
echo "连接成功!";  // 如果连接成功,输出连接成功的信息

// 关闭连接
mysqli_close($conn);  // 关闭数据库连接
?>

解析

  • mysqli_connect() :这是一个过程化的函数,用来建立与数据库的连接。它接收四个参数:服务器名、用户名、密码和数据库名。如果连接失败,返回 false
  • mysqli_connect_error() :如果 mysqli_connect() 返回 falsemysqli_connect_error() 会返回一个描述连接错误的字符串。
  • mysqli_close() :关闭数据库连接,释放资源。

2. PDO 连接源码解析

php
复制编辑
<?php
// 数据库配置信息
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

try {
    // 创建 PDO 实例并连接数据库
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    
    // 设置 PDO 错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "连接成功!";
}
catch(PDOException $e) {
    echo "连接失败: " . $e->getMessage();  // 捕获异常并显示错误信息
}
?>

解析

  • new PDO() :该行代码是用来创建一个新的 PDO 实例并与数据库建立连接。构造函数接收以下三个参数:

    • mysql:host=$servername;dbname=$dbname:数据库类型(mysql)、数据库服务器地址和数据库名称。
    • $username$password:连接数据库所需的用户名和密码。
  • $conn->setAttribute() :这行代码设置 PDO 错误模式为异常处理模式。PDO::ATTR_ERRMODE 设置为 PDO::ERRMODE_EXCEPTION 意味着如果出现错误,PDO 会抛出异常(PDOException)。这样我们可以通过 try-catch 来捕获错误并进行处理。

  • catch(PDOException $e) :如果数据库连接或查询过程中出现错误,PDOException 异常将会被捕获。我们使用 $e->getMessage() 来输出详细的错误信息。

3. 总结

  • MySQLi 提供了面向对象和过程化两种方式来与数据库进行交互。如果你仅使用 MySQL 数据库,MySQLi 可以很高效地处理连接和查询操作。
  • PDO 是更为通用的数据库连接方式,支持多种数据库(如 MySQL、PostgreSQL、SQLite 等),同时使用 try-catch 异常处理机制,使得错误处理更为简洁和强大。它更适合需要跨数据库支持的应用。

如果有需要更多了解可lx:haierym.com/