从mysql迁移到mysqli或pdo?

12

重复问题:mysqli或PDO有什么优缺点?

我想将一个网站从mysql迁移到mysqli或pdo,主要是为了学习,也希望能提高性能。

我已经阅读了http://php.net/manual/en/mysqli.overview.php,看起来这两种方法都可以满足我的需求,但不确定该选择哪个。

该网站目前主要使用非面向对象的代码,但我在其他语言中有面向对象的编程经验。绝大多数查询都是简单的复杂select语句,只有很少量的update/insert操作。请问您建议我选择哪个以便于我的学习和这个特定网站的情况?

如果您需要任何额外的信息,请告诉我。

谢谢。


1
如果这是一个关于如何迁移到PDO/MySQLi的问题,那么这可能是一个非重复的、有趣的问题! - nickf
可能是重复的问题:mysqli或PDO-优缺点是什么? - Noah Goodrich
5个回答

20

PDO的优点:

  • 自PHP 5.x版本以来已原生支持
  • 支持命名参数,而不是数字索引的?
  • 相同的抽象库支持多个不同的RDBM's

Mysqli的缺点:

  • 在正确存储和检索大型对象方面存在问题。
  • 不支持命名参数。

除此之外,这两个库基本上是相同东西的不同味道。它们都有函数来引用参数,都支持参数化查询。

如果以上没有说服你,那么根据其语法、风格等选择你喜欢的库。


9

我不认为PDO会给你带来任何性能提升,但它会给你这两个非常有吸引力的长期好处:

  • 只需进行少量代码更改即可将应用扩展到使用其他数据库
  • PDO库中具有很多安全性内置

如果你不理解第1点和第2点的好处,那么就坚持使用经过验证的mysql库(不过你至少在使用mysql_real_escape_string吧)?

如果我正在学习一个新的PHP数据库库,我相信PDO是正确的选择,特别是如果你正在创建一个可能被用于除了你自己的服务器之外的其他系统上的Web应用程序。


8

来源于http://www.php.net/manual/en/mysqli.overview.php

PDO具有一些优势,如干净、简单、便携的API,但其主要缺点是它不允许您使用MySQL服务器最新版本中提供的所有高级功能。例如,PDO不允许您使用MySQL多语句支持等功能。


4

PDO相比其他方式更加安全,而且不需要太多麻烦。但是为了过渡,我建议您转移到mysqli,因为它更快、更容易使用,而且大多数API/语法与旧的mysql扩展相同。

在此处(向下滚动)进行快速比较:
PHP & MySQLi

编辑:看起来这是你之前阅读过的同一个链接,抱歉。


1

在构建我的ORM和抽象库时,我使用了MySQLi和PDO来查看哪个执行更好。 MySQLi更快 - 但这并不足以仅基于此选择。

MySQLi / MySQL / SQLite或任何其他独立库相对于PDO具有的一个优势是它们返回结果中找到的行数,这通常有助于测试是否存在任何结果。同时,在PDO中,您可以要么fetchAll()结果并计算它们 - 要么在之前运行计数查询以查看结果数量。因此,您必须适应以不同的方式处理此问题。

哦,最终我选择了PDO而不是MySQLi。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接