MySQL 连接(附带实例)
MySQL 连接是与数据库交互的基础,PHP 提供了多种方式来连接 MySQL 数据库,最常用的方式是使用 MySQLi 和 PDO 扩展。下面我将为你详细讲解如何使用这两种方式来连接 MySQL,并附带具体实例。
1. 使用 MySQLi 扩展连接 MySQL
面向过程方式
使用 MySQLi 的面向过程方式连接 MySQL 数据库,通常需要指定主机名、用户名、密码和数据库名。
<?php
// 创建数据库连接
$connection = mysqli_connect("localhost", "username", "password", "database_name");
// 检查连接是否成功
if (!$connection) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
// 关闭连接
mysqli_close($connection);
?>
mysqli_connect用于建立数据库连接,第一个参数是主机地址(通常是localhost),第二个是用户名,第三个是密码,第四个是数据库名。- 如果连接失败,会输出错误信息并终止脚本执行。
面向对象方式
MySQLi 也支持面向对象的方式连接数据库。你可以通过 new mysqli() 来创建数据库连接对象。
<?php
// 创建 MySQLi 实例并连接数据库
$mysqli = new mysqli("localhost", "username", "password", "database_name");
// 检查连接是否成功
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
echo "Connected successfully";
// 关闭连接
$mysqli->close();
?>
- 使用
new mysqli()创建连接实例,$mysqli->connect_error用于检查连接是否成功。
2. 使用 PDO 扩展连接 MySQL
PDO(PHP Data Objects)是一个数据库抽象层,它可以同时支持多种数据库,包括 MySQL。使用 PDO 时,连接方式更为简洁,且支持预处理语句。
基本连接
<?php
try {
// 创建 PDO 实例并连接到 MySQL 数据库
$pdo = new PDO("mysql:host=localhost;dbname=database_name", "username", "password");
// 设置 PDO 错误模式为异常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
new PDO("mysql:host=localhost;dbname=database_name", "username", "password")用于创建 PDO 实例并连接 MySQL 数据库。setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)设置错误模式为异常,方便捕捉并处理连接错误。
指定字符集(可选)
为了确保数据库连接使用正确的字符集,通常在连接时设置字符集。
<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=database_name", "username", "password");
$pdo->exec("SET NAMES utf8"); // 设置字符集为 UTF-8
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
关闭连接
PDO 连接会在脚本结束时自动关闭,因此通常不需要显式地关闭连接。你也可以手动设置 $pdo = null; 来关闭连接。
<?php
$pdo = null; // 关闭连接
?>
3. MySQL 连接常见错误处理
无论是 MySQLi 还是 PDO,在连接数据库时都可能出现一些错误。为了更好地调试和处理错误,可以使用以下方式:
MySQLi 错误处理
- 在 面向过程方式 中,如果连接失败,
mysqli_connect_error()将返回错误信息。
<?php
$connection = mysqli_connect("localhost", "username", "password", "database_name");
if (!$connection) {
die("Connection failed: " . mysqli_connect_error());
}
?>
PDO 错误处理
- 使用 try-catch 块来捕获连接错误,
$e->getMessage()会返回错误信息。
<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=database_name", "username", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
4. 总结
- MySQLi 是 MySQL 专用的扩展,支持过程化和面向对象的方式,适用于与 MySQL 数据库交互。
- PDO 提供了一个更为统一和灵活的数据库接口,支持多种数据库类型,且提供更好的安全性(通过预处理语句防止 SQL 注入)。
- 两者都可以连接 MySQL 数据库,但如果将来可能需要切换数据库(例如从 MySQL 到 PostgreSQL),则 PDO 是更优选择。
通过这些实例,你可以选择最适合自己需求的方式连接和操作 MySQL 数据库。