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()返回false,mysqli_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/