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