技术文章
PHP连接MySQL
发布日期:2019-11-23 阅读次数:3092 字体大小:

PHP5及以上版本建议使用以下方式连接MySQL数据库:

  • MySQLi extension这里的i意为improved
  • PDO全称PHP Data Objects

在PHP早期版本中我们使用MySQL扩展,但该扩展在2012年开始不建议使用。

我该用MySQLi,还是PDO呢

如果你需要一个简短的回答,那就“习惯哪个就用哪个”

MySQLi和PDO有它们自己优势:PDO应用在12种不同数据库中,MySQLi只针对MySQL数据库。

所以,如果你的项目需在多种数据库中切换,建议用PDO,这样你只需要修改连接字符串和部分查询语句即可。如使用MySQLi,不同的数据库,需要重新编写所有代码,包括查询。

两者都是面向对象,但MySQLi提供了API接口。

两者都支持预处理语句。预处理语句可以防止SQL注入,对于web项目安全性是非常重要的。

MySQLi和PDO连接MySQL实例

我们用以下三种方式来演示PHP操作MySQL:

  • MySQLi面向对象的方式
  • MySQLi面向过程的方式
  • PDO的方式

MySQLi面向对象的方式:

$servername = "localhost";

$username = "username";

$password = "password";

$conn = new mysqli($servername, $username, $password);

if ($conn->connect_error) {

 die("连接失败: " . $conn->connect_error);

}

echo "连接成功";

?>

注意在上面向对象的实例中$connect_error是在PHP5.2.9和5.3.0中添加的。如果你需要兼容更早版本请使用以下代码替换:

  1.  
  2. if (mysqli_connect_error()) {
  3.     die("MySQL数据库连接失败: " . mysqli_connect_error());
  4. }

MySQLi面向过程的方式:

$servername = "localhost";

$username = "username";

$password = "password";

$conn = mysqli_connect($servername, $username, $password);

if (!$conn) {

die("Connection failed: " . mysqli_connect_error());

}

echo "连接成功";

?>

PDO的方式:

$servername = "localhost";

$username = "username";

$password = "password";

try {

    $conn = new PDO("mysql:host=$servername;", $username, $password);

   echo "连接成功";

}

catch(PDOException $e)

{

  echo $e->getMessage();

}

?>

注意在以上PDO实例中我们已经指定了数据库myDB。PDO在连接过程需要设置数据库名。如果没有指定,则会抛出异常。

关闭连接

MySQLi面向对象的方式:

$conn->close();

MySQLi面向过程的方式:

mysqli_close($conn);

PDO的方式:

$conn = null;