PHP连接MySQL

  • A+
所属分类:成长之路

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面向对象的方式:

  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";
  5. // 创建连接
  6. $conn = new mysqli($servername$username$password);
  7. // 检测连接
  8. if ($conn->connect_error) {
  9.     die("连接失败: " . $conn->connect_error);
  10. }
  11. echo "连接成功";
  12. ?>

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

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

MySQLi面向过程的方式:

  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";
  5. // 创建连接
  6. $conn = mysqli_connect($servername$username$password);
  7. // 检测连接
  8. if (!$conn) {
  9.     die("Connection failed: " . mysqli_connect_error());
  10. }
  11. echo "连接成功";
  12. ?>

PDO的方式:

  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";
  5. try {
  6.     $conn = new PDO("mysql:host=$servername;"$username$password);
  7.     echo "连接成功";
  8. }
  9. catch(PDOException $e)
  10. {
  11.     echo $e->getMessage();
  12. }
  13. ?>

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

关闭连接

MySQLi面向对象的方式:

  1. $conn->close();

MySQLi面向过程的方式:

  1. mysqli_close($conn);

PDO的方式:

  1. $conn = null;
  • 我的微博
  • 这是微博的扫一扫
  • weinxin
  • 微信公众
  • 微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:4   其中:访客  2   博主  2

    • avatar 萝卜树上 6

      签到成功!签到时间:今日的‎20‎:‎17‎:‎02,每日打卡,生活更精彩哦!

      • avatar 享乐时光 3

        不错 写的非常好

        • avatar Penn Admin

          签到成功!签到时间:今日的下午7:37:16,每日打卡,生活更精彩哦!