- 我什么时候应该使用准备好的语句?对于任何类型的查询或只是特定类型?
- 我应该使用准备好的语句进行选择或插入等吗?
- 我什么时候不应该使用它们?
谢谢。
准备好的语句应该用于包含参数的查询。否则,它们是资源的浪费。
例子:
$pdo->query("SELECT * FROM `table`"); //No need for preparing here, no parameters.
然而
$pdo->prepare("SELECT * FROM `table` WHERE `id` = :id"); //Prepare.
我什么时候应该使用准备好的语句?对于任何类型的查询或只是特定类型?
对于任何种类最好。特别是如果您有专门的函数或类来运行查询。在这种情况下,应该只有一种方法来运行所有查询,无论它们是否具有动态部分。
更不用说像“SELECT * FROM table”这样的全静态查询在沙盒之外是罕见的。
我应该使用准备好的语句进行选择或插入等吗?
没关系。这个想法是用 placeholder表示查询中的每个动态值。查询类型绝对无关紧要。
我什么时候不应该使用它们?
这个问题与第一个问题非常相似。如果一直使用准备好的语句,你会帮自己一个大忙。
每当您要使用来自程序外部任何地方的数据时,都应该使用准备好的语句和参数化查询。这包括与数据库的任何交互,无论是 INSERT、DELETE 或 UPDATE,甚至是 SELECT。
如果您使用外部数据构建 SQL 语句,您将处于危险之中。