MySQL,MySQLi和PDO有什么区别?

Chi*_*ekh 124 php mysql mysqli pdo

MySQL,MySQLiPDO有什么区别?

哪一个最适合与PHP-MySQL一起使用?

Mat*_*hen 95

从PHP中使用MySQL有三种流行的方法.

  1. (已弃用)mysql函数是程序性的,并使用手动转义.
  2. MySQLi是mysql函数的替代品,具有面向对象和过程版本.它支持准备好的陈述.
  3. PDO(PHP数据对象)是一个通用的数据库抽象层,在许多其他数据库中支持MySQL.它提供准备好的语句,并在返回数据方面具有显着的灵活性.

我建议将PDO与准备好的语句一起使用.它是一个设计良好的API,如果需要,可以让您更轻松地移动到另一个数据库(包括任何支持ODBC的数据库).

  • 对于程序你必须使用mysql _*()函数通常会产生混淆,对于OO你使用mysqli!事实是mysqli完全取代了mysql的早期(PHP 4)实现.可以使用过程样式和带有mysqli的OO. (8认同)

Rag*_*geZ 43

这些是访问MySQL后端的不同API

  • MySQL的是历史API
  • mysqli的是历史API的新版本.它应该表现更好,并具有更好的功能集.此外,API是面向对象的.
  • PDO_MySQL是PDO的MySQL.PDO已经在PHP中引入,该项目旨在为所有数据库访问创建一个通用API,因此从理论上讲,您应该能够在不更改任何代码的情况下在RDMS之间进行迁移(如果您在查询中不使用特定的RDBM函数) ),也是面向对象的.

所以这取决于你想要生成什么样的代码.如果您更喜欢面向对象的图层或普通函数......

我的建议是

  1. PDO
  2. 库MySQLi
  3. MySQL的

我的感觉,mysql API可能会在将来的版本中被删除PHP.

  • 这不再是一种感觉:PHP7删除了mysql API,留下了PDO和mysqli (3认同)

Elz*_*ugi 7

有一个表格比较了3个API功能.尽可能使用Mysqli,这是PDO之后推出的最新版本,并且将来会更好地维护.

  • 这是完全错误的.对于PHP 5.0,`mysqli`和`PDO`都是[两者都发布](http://www.php.net/manual/en/mysqli.overview.php).并且您没有给出建议PDO不会被维护的任何依据. (4认同)
  • 我没有暗示.PDO和mysqli有不同的功能,可能它们都会被保留.PDO MAIN FEATURE是不同驱动程序的一致API,mysql只是其中之一. (2认同)