通常你会准备一个语句,然后你只会在循环内执行它时发送不同的值。
但我见过 MVC 代码,例如,在其中为更新方法的每次调用准备语句。所以我的问题是 - 这会影响性能吗?如果是这样,增加多少?比一开始就不准备陈述更糟还是更好?或者 PHP 和/或 MySQL 是否意识到它并且只准备一次?
最佳答案
某些数据库和应用程序服务器会在客户端缓存准备好的语句,并意识到您正在尝试准备已经准备好的语句,并从缓存中提供对 pstmt 的引用。这在 Java 应用程序服务器中很常见,但在 PHP 中可能不太常见。
准备一份声明肯定比不准备更昂贵。它需要一些额外的数据库往返,所以从性能的角度来看,如果您要多次调用相同的 SQL(具有不同的参数),它是值得的。
然而,除了性能之外还有另一个方面 - 安全性。准备好的语句是抵御 SQL 注入(inject)攻击的唯一最佳防线——这种攻击非常普遍。因此,我会一直使用准备好的语句,即使在某些情况下跳过准备步骤在技术上可能性能更高。
关于php - 多次准备一个语句不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5649657/