php - 多次准备一个语句不好吗?

标签 php mysql database pdo prepared-statement

通常你会准备一个语句,然后你只会在循环内执行它时发送不同的值。

但我见过 MVC 代码,例如,在其中为更新方法的每次调用准备语句。所以我的问题是 - 这会影响性能吗?如果是这样,增加多少?比一开始就不准备陈述更糟还是更好?或者 PHP 和/或 MySQL 是否意识到它并且只准备一次?

最佳答案

某些数据库和应用程序服务器会在客户端缓存准备好的语句,并意识到您正在尝试准备已经准备好的语句,并从缓存中提供对 pstmt 的引用。这在 Java 应用程序服务器中很常见,但在 PHP 中可能不太常见。

准备一份声明肯定比不准备更昂贵。它需要一些额外的数据库往返,所以从性能的角度来看,如果您要多次调用相同的 SQL(具有不同的参数),它是值得的。

然而,除了性能之外还有另一个方面 - 安全性。准备好的语句是抵御 SQL 注入(inject)攻击的唯一最佳防线——这种攻击非常普遍。因此,我会一直使用准备好的语句,即使在某些情况下跳过准备步骤在技术上可能性能更高。

关于php - 多次准备一个语句不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5649657/

相关文章:

php - 为什么我的 SQL 字符串在 PHP 中导致 "Error Message: Parse error: syntax error"?

php - 如何在php和mysql中添加图片上传?

mysql - 数据库设计: I want to store the type of a house (apartment,别墅、工作室等..)

sql - 如何将 SELECT 语句中的值赋给变量?

database - 如何使用 shell 脚本将 HiveQL 查询的结果输出到 CSV?

javascript - 有效地将 $.ajax 与 php 结合使用的问题

php - 如何杀死一个网络进程

mysql - 什么时候创建元表最好?

java - 使用 Java 更新 Mysql 表行

c# - 选择整个第一个表,并用连接表覆盖一列