哪个更好,MySQL还是MySQLi?为什么?我应该使用哪种?
我的意思不仅仅是在性能方面,还包括任何其他相关功能。
答案 0 :(得分:107)
如果您查看MySQL Improved Extension Overview,它应该告诉您需要知道的关于两者之间差异的所有信息。
主要有用的功能是:
答案 1 :(得分:69)
有一个专门用于帮助在
中选择mysql,mysqli和PDO的手册页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)以及
上非常详尽的博客文章答案 2 :(得分:15)
我放弃使用mysqli。它太不稳定了。我有使用mysqli崩溃PHP的查询,但使用mysql包工作得很好。 mysqli crashes on LONGTEXT columns也是{{3}}。自从至少2005年并且仍然存在以来,已经以各种形式提出了这个错误。老实说,我喜欢使用准备好的语句,但mysqli只是不够可靠(并且似乎没有人愿意修复它)。如果你真的想要准备好的陈述请与PDO一起使用。
答案 3 :(得分:12)
MySQLi代表MySQL的改进。它是MySQL绑定的面向对象的接口,使事情更容易使用。它还为准备好的语句提供支持(非常有用)。如果您使用的是PHP 5,请使用MySQLi。
答案 4 :(得分:5)
PDO更好的是什么;它是一个不那么狡猾的界面,并提供与MySQLi相同的功能。
使用预准备语句很好,因为它消除了SQL注入的可能性;使用服务器端预处理语句很糟糕,因为它增加了往返次数。
答案 5 :(得分:3)
对我而言,准备好的陈述是必备功能。更准确地说,参数绑定(仅适用于预处理语句)。这是将字符串插入SQL命令的唯一真正理智的方法。我真的不相信“逃避”功能。数据库连接是二进制协议,为什么要使用ASCII限制子协议参数?