我正在考虑为我所有的php项目切换到mysqli.我的代码编写方式(我运行非常简单的网站并构建我自己的基本框架,我在其中使用所有这些)我不应该在修改函数和类时遇到太多问题.
但是,我只听到关于准备好的语句的积极的事情,关于可用的php函数的一些抱怨,最值得注意的是缺少一段时间使用mysql_fetch_array的简单替代.
这听起来有点太好了,所以我想知道是否有人可以强调使用预准备语句的一些问题,例如速度和资源使用.
如果您习惯于仅将变量附加到查询字符串,那么准备语句的编程需要一些时间来适应。MySQL 使用位置参数(您的查询将包含替换变量所属的问号)。最好的选择是将其放入现有的数据库抽象中。如果该抽象编写正确,则无论如何您都不应该在包装器外部调用 mysql_fetch_array 。
这个问题的解决方案就是提前收集所有行,但当然这是假设您不检索 1000 行而只要求第一行。无论 mysqli 如何,您都应该进行此更改。
最后,有些语句不容易被参数替换,例如使用参数in('x', 'y', 'z')数量可变的语法的查询。这是可以做到的,但您可能希望丰富您的数据库抽象,以允许它创建查询并执行它们。
不过,就性能和安全性而言,这种权衡绝对是值得的。PHP 端的额外处理通常被 MySQL 端查询的缓存执行计划所抵消,并且您可以免受许多最常见的 SQL 注入漏洞的影响。
希望有帮助,乔