PHP 5及更高版本可以与MySQL数据库使用的工作:
- MySQLi扩展 (the "i" stands for improved)
- PDO (PHP Data Objects)
较早版本的PHP中使用MySQL扩展。 然而,这个扩展在2012年已被否决。
我使用mysqli或PDO?
如果你需要一个简单的答案,这将是"Whatever you like" 。
这两个库MySQLi和PDO有自己的优势:
PDO将在12个不同的数据库系统,那里的MySQLi的将只与MySQL数据库携手。
所以,如果你要切换项目中使用其他数据库,PDO使得过程变得轻松。 你只需要更改连接字符串和几个疑问。 随着库MySQLi,你需要重写整个代码 - 查询包括在内。
两者都是面向对象的,但库MySQLi还提供了一个程序的API。
两者都支持预处理语句。 准备语句SQL注入保护,并且是Web应用程序的安全性非常重要。
在这两个库MySQLi和PDO语法的MySQL实例
在这一点,并在下面的章节中,我们演示使用PHP和MySQL的工作方式有三种:
- 库MySQLi (object-oriented)
- 库MySQLi (procedural)
- PDO
库MySQLi安装
对于Linux和Windows:mysqli扩展是自动安装在大多数情况下,安装PHP5 mysql软件包时。
对于安装的详细信息,请访问: http://php.net/manual/en/mysqli.installation.php
PDO安装
对于安装的详细信息,请访问: http://php.net/manual/en/pdo.installation.php
打开一个连接到MySQL
之前,我们可以在MySQL数据库中访问数据,我们需要能够连接到服务器:
实施例(MySQLi Object-Oriented)
<?php
$servername = "localhost";
$username = "username";
$password =
"password";
// Create connection
$conn =
new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
注意上面的面向对象的例子:$ connect_error被打破,直到5.2.9 PHP 5.3.0和。 如果您需要事先以确保5.2.9和5.3.0的PHP版本的兼容性,使用下面的代码来代替:
//检查连接
如果( mysqli_connect_error() ){
die("Database connection failed: " . mysqli_connect_error() );
}
实施例(MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername,
$username, $password);
// Check connection
if (!$conn) {
die("Connection
failed: " . mysqli_connect_error());
}
echo "Connected
successfully";
?>
实施例(PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB",
$username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
echo "Connected
successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
请注意,在PDO上面的例子,我们还指定了一个数据库(myDB) PDO需要一个有效的数据库连接。 如果没有指定数据库,则抛出异常。
提示:PDO的一大好处是,它有一个异常类来处理我们的数据库查询可能出现的任何问题。 如果异常是在try {}块中抛出,脚本停止执行并直接流到第一catch() {}块。
关闭连接
脚本结束时的连接将被自动关闭。 之前关闭连接,使用以下命令:
实施例(MySQLi Object-Oriented)
$conn->close();
实施例(MySQLi Procedural)
mysqli_close($conn);
实施例(PDO)
$conn = null;