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