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

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

5 Solutions collect form web for “我应该什么时候使用MySQLi而不是MySQL?”

您应该使用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能够。

  • 没有启用PHP中的套接字传输“ssl”
  • 接口或抽象类:使用哪一个?
  • 公共,私人和保护之间有什么区别?
  • 致命错误:未find类“SoapClient”
  • Laravel无法连接到dockerise数据库
  • 如何读取/改善由PHP计算的CRAP指数
  • 准确的方法来衡量PHP脚本的执行时间
  • 如何使用连字符名称访问此对象属性?
  • 如何在PHP> = 5.3严格模式下将属性添加到对象中,而不会产生错误
  • PDF编辑在PHP中?
  • 为什么我会在include或include_once语句中使用dirname(__ FILE__)?