何时使用/不使用准备好的陈述?

时间:2013-09-08 20:36:37

标签: php mysql mysqli

  • 我应该何时使用准备好的陈述?对于任何类型的查询或只是 具体种类?
  • 我是否应该使用准备好的语句进行SELECTING或INSERTING,等等?
  • 什么时候不应该使用它们?

感谢。

3 个答案:

答案 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。

如果使用外部数据构建S​​QL语句,则存在危险。