哪个更好,MySQL还是MySQLi?为什么?我应该使用哪个?
我的意思不仅仅是在性能方面,还有其他相关功能.
如果你看看MySQL改进的扩展概述,它应该告诉你需要知道的关于两者之间差异的一切.
主要有用的功能是:
面向对象的接口
支持准备好的陈述
支持多个陈述
支持交易
增强的调试功能
嵌入式服务器支持
有一个专门用于帮助在mysql,mysqli和PDO之间进行选择的手册页
http://php.net/manual/en/mysqlinfo.api.choosing.php和
http://www.php.net/manual/en/mysqlinfo.library.choosing.php
PHP团队建议使用mysqli或PDO_MySQL进行新开发:
建议使用mysqli或PDO_MySQL扩展.建议不要将旧的mysql扩展用于新开发.下面提供了详细的特征比较矩阵.所有三个扩展的整体性能被认为是大致相同的.虽然扩展的性能只占PHP Web请求总运行时间的一小部分.通常,影响低至0.1%.
该页面还有一个比较扩展API的功能矩阵.mysqli和mysql API之间的主要区别如下:
mysqli mysql Development Status Active Maintenance only Lifecycle Active Long Term Deprecation Announced* Recommended Yes No OOP API Yes No Asynchronous Queries Yes No Server-Side Prep. Statements Yes No Stored Procedures Yes No Multiple Statements Yes No Transactions Yes No MySQL 5.1+ functionality Yes No
*http://news.php.net/php.internals/53799
还有一个额外的功能矩阵比较库(新的mysqlnd和libmysql)
http://www.php.net/manual/en/mysqlinfo.library.choosing.php
以及一篇非常详尽的博客文章
http://blog.ulf-wendel.de/2012/php-mysql-why-to-upgrade-extmysql/
我放弃了使用mysqli.它太不稳定了.我有使用mysqli崩溃PHP的查询,但使用mysql包工作得很好.此外,mysqli在LONGTEXT列上崩溃了.至少自2005年以来,这种错误已经以各种形式提出并且仍然存在.老实说,我喜欢使用准备好的语句,但mysqli只是不够可靠(并且似乎没有人愿意修复它).如果你真的想要准备好的陈述请与PDO一起使用.
MySQLi代表MySQL的改进.它是MySQL绑定的面向对象的接口,使事情更容易使用.它还为准备好的语句提供支持(非常有用).如果您使用的是PHP 5,请使用MySQLi.
PDO更好的是; 它是一个不那么狡猾的界面,并提供与MySQLi相同的功能.
使用预准备语句很好,因为它消除了SQL注入的可能性; 使用服务器端预处理语句是不好的,因为它增加了往返次数.