最新的Web开发教程
 

PHP连接到MySQL


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;