关于PDO和准备好的陈述的一些问题

时间:2011-02-16 19:06:16

标签: php pdo prepared-statement

我开始在我的应用程序中使用PDO和准备语句,但我对那里的专业人员有一些疑问。希望你能帮我! :)

  1. 我应该何时使用准备好的陈述?我整个应用程序中的每个查询?
  2. 我可以使用INSERT的预备语句吗?
  3. 我可以在INSERT中使用带变量列的预处理语句吗?
  4. 准备好的语句快多少(使用SELECT或INSERT时)
  5. 我可以使用UPDATE准备好的语句吗?
  6. 除了速度提升和安全性之外,我为什么要使用它们?

2 个答案:

答案 0 :(得分:7)

  

我应该何时使用准备好的陈述?我整个应用程序中的每个查询?

是。到处使用它们。几乎没有边缘情况,您仍然需要连接SQL和值转义。绑定参数不能取代动态SQL构造。

  

我可以在INSERT中使用预准备语句吗?

是。 INSERT INTO tbl (x,y,z) VALUES (?,?,?)

  

我可以在INSERT中使用带变量列的预处理语句吗?

是。但是列名不能绑定参数。构造动态INSERT语句需要过滤器和/或转义函数。

  

准备好的语句多快(使用SELECT或INSERT时)

没有一般答案。

如果循环数据数组并重复使用预准备语句进行插入,则会出现速度增加。普通查询:取决于。测试自己。

  

我可以使用UPDATE准备好的语句吗?

是。 UPDATE tbl SET x = ? AND y = ? WHERE z = ?

  

除了速度提升和安全性之外,我为什么要使用它们?

使SQL查询更具可读性。

答案 1 :(得分:2)

  

我应该何时使用准备好的陈述?我整个应用程序中的每个查询?

当然,是的,否则一切都是徒劳无助的。

  

我可以在INSERT中使用预准备语句吗?

您怎么看?如果你不能,它会有意义吗? “我们为你制作了一套出色的盔甲,但它只保护了一方”?

  

我可以在INSERT中使用带变量列的预处理语句吗?

您可以添加可变数量的占位符!

  

准备好的语句多快(使用SELECT或INSERT时)

你永远不会注意到。

  

我可以使用UPDATE准备好的语句吗?

没有评论。

  

除了速度提升和安全性之外,我为什么要使用它们?

嗯,原因与魔术引号完全相同 - 它可以为那些毫无头绪的人提供更安全的应用程序。就是这样。