PHP 连接到 MySQL
PHP 5 及更高版本可以使用以下方式与 MySQL 数据库配合使用:
- MySQLi 扩展 (“i” 代表改进)
- PDO(PHP 数据对象)
早期版本的 PHP 使用 MySQL 扩展。但是,此扩展已于 2012 年弃用。
我应该使用 MySQLi 还是 PDO?
如果您需要一个简短的回答,那就是“随您喜欢”。
MySQLi 和 PDO 都有其优点:
PDO 可以在 12 种不同的数据库系统上运行,而 MySQLi 只能在 MySQL 数据库上运行。
因此,如果您必须将项目切换为使用其他数据库,PDO 可使该过程变得简单。您只需更改连接字符串和一些查询。使用 MySQLi,您将需要重写整个代码 - 包括查询。
两者都是面向对象的,但 MySQLi 还提供了过程 API。
两者都支持“Prepared Statements”。Prepared Statements 可防止 SQL 注入,对于 Web 应用程序安全非常重要。
MySQLi 和 PDO 语法中的 MySQL 示例
在本章以及接下来的章节中,我们将演示使用 PHP 和 MySQL 的三种方法:
- MySQLi(面向对象)
- MySQLi(程序)
- 原产地保护组织
MySQLi 安装
对于 Linux 和 Windows:安装 php5 mysql 包时,大多数情况下会自动安装 MySQLi 扩展。
有关安装详细信息,请访问: https://php.net/manual/en/mysqli.installation.html
PDO 安装
有关安装详细信息,请访问: https://php.net/manual/en/pdo.installation.html
打开与 MySQL 的连接
在我们访问 MySQL 数据库中的数据之前,我们需要能够连接到服务器:
示例(MySQLi 面向对象)
<?php
$服务器名称 = “本地主机”;
$用户名 = “用户名”;
$password = "密码";
// 创建连接
$conn = new mysqli($服务器名称,$用户名,$密码);
// 检查连接
如果 ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>
注意上面的面向对象的例子:
$connect_error 在 PHP 5.2.9 和 5.3.0 之前无效。如果您需要确保与 5.2.9 和 5.3.0 之前的 PHP 版本兼容,请改用以下代码:
// 检查连接
如果(mysqli_connect_error()){
die("数据库连接失败: " . mysqli_connect_error());
}
示例(MySQLi 过程)
<?php
$服务器名称 = “本地主机”;
$用户名 = “用户名”;
$password = "密码";
// 创建连接
$conn = mysqli_connect($服务器名称, $用户名, $密码);
// 检查连接
如果(!$ conn){
die("连接失败: " . mysqli_connect_error());
}
echo "连接成功";
?>
示例 (PDO)
<?php
$服务器名称 = “本地主机”;
$用户名 = “用户名”;
$password = "密码";
尝试 {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// 将 PDO 错误模式设置为异常
$conn->设置属性(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
echo "连接成功";
} 捕获(PDOException $e){
echo "连接失败:" . $e->getMessage();
}
?>
笔记: 在上面的 PDO 示例中,我们还有指定数据库(myDB)。PDO 需要连接到有效的数据库。如果没有指定数据库,则会引发异常。
提示: PDO 的一大优点是它有一个异常类来处理数据库查询中可能出现的任何问题。如果在 try{ } 块中抛出异常,脚本将停止执行并直接转到第一个 catch(){ } 块。
关闭连接
脚本结束时连接将自动关闭。若要提前关闭连接,请使用以下命令:
MySQLi 面向对象:
$conn->关闭();
MySQLi 程序:
mysqli_close($conn);
原产地名称(PDO):
$conn = 空;