我应该将哪些参数声明为sql占位符?

时间:2011-09-23 08:11:01

标签: php mysql pdo prepared-statement placeholder

即使参数始终相同,我是否应该为每个参数使用占位符?那么空值怎么样?我也应该为它们使用占位符吗?

我有兴趣避免准备和启用查询缓存。我正在使用mysql,php和pdo,但我认为这与其他数据库也是一样的。安全性不是一个交易,因为问题中的参数是硬编码的。

案例1:我应该使用占位符来提高可见性,还是硬编码值1更好? select * from table where visibility = 1 and product =:id

案例2:我应该使用占位符null吗? (这两种情况都一样吗?) 从t1中选择*,其中color为null update t1 set color = null where product =:id

1 个答案:

答案 0 :(得分:1)

如果参数是硬编码的,则根本没有使用占位符 默认情况下,mysql启用了查询缓存,因此,您不必担心它。

因此,如果确实没有动态更改的参数,则在准备和执行时没有用处。只需使用PDO查询方法。

但是,标题Which parameters should I declare as sql placeholders?中的问题更为有趣。

就笨拙的PDO库而言,您必须仅使用占位符来存储数据。 但是在动态创建SQL查询方面,您必须为查询的每个变量部分使用适当的占位符。