我应该什么时候使用MySQLi而不是MySQL?

有人能为我澄清一下使用MySQLi代替MySQL的优缺点吗? 有没有我不应该使用MySQLi的情况? 我需要以不同的方式configuration我的服务器才能使用MySQLi吗? 例如,我是否需要升级Apache或PHP,以便我可以支持MySQLi?

您应该使用MySQLi扩展而不是MySQL扩展的原因很多:

  1. MySQLi为您提供了准备好的语句 – 将数据发送到MySQL并保护您免受SQL注入的安全方式。 仅此一项就足以在MySQL上selectMySQLi
  2. MySQLi支持大部分MySQLfunction。
  3. MySQLi是面向对象的。
  4. MySQLi支持准备好的语句,事务和多个语句。
  5. 旧的MySQL扩展从PHP 5.5.0开始已弃用

还有其他好处。 但主要是,你应该把重点放在安全性和稳定性上 – 而MySQLi只是给你提供这个。

PHP团队拒绝进一步支持MySQL扩展。 这个理由是足够的。

所有其他原因没有多大意义:

  • MySQLi为您提供了准备好的语句 – 可以使用旧的MySQL与手动处理的plaeholders, 并获得更安全的 。 这本身应该阻止MySQL无用的弃用。
  • MySQLi支持大多数 PHP用户从未听说过的大部分MySQLfunction
  • MySQLi是面向对象的 – 一双直接的手可以在几个小时内使旧的mysql对象面向对象。
  • * MySQLi支持
    • 事务* – mysql也支持它们。 只需运行START TRANSACTION查询即可设置。
    • 多个报表 – 但没有人真正需要它们。
    • 准备好的陈述 – 事实上, 支持是可怕的 ,使他们可以无法使用

所以,没有任何优势。
如果你想与不被弃用的,但可用的扩展相处 – 去PDO 。

如果你正在使用mysql > 4.1.3。 Mysqli是一个新的php接口。 来自http://www.php.net/manual/en/mysqli.overview.php的引用;

什么是PHP的MySQL扩展?

这是原来的扩展,旨在让您开发与MySQL数据库交互的PHP应用程序。 mysql扩展提供了一个过程接口,仅用于4.1.3以前的MySQL版本。 该扩展可以与MySQL 4.1.3或更新版本一起使用,但不是所有最新的MySQL服务器function都可用。

 Note: If you are using MySQL versions 4.1.3 or later it is strongly recommended that you use the mysqli extension instead. 

总是,如果可能的话。

有可能你的PHP安装不支持MySQLi。 但是,大多数主机提供商都支持MySQLi。

除非你使用旧版本的MySQL数据库(在4.1.3之前),或者需要MySQLi中尚未包含的某些function(我认为有两个函数中没有一个是移过来的),那么只要你使用MySQLi能够。