即使参数始终相同,我是否应该为每个参数使用占位符?那么空值怎么样?我也应该为它们使用占位符吗?
我有兴趣避免准备和启用查询缓存。我正在使用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
答案 0 :(得分:1)
如果参数是硬编码的,则根本没有使用占位符 默认情况下,mysql启用了查询缓存,因此,您不必担心它。
因此,如果确实没有动态更改的参数,则在准备和执行时没有用处。只需使用PDO查询方法。
但是,标题Which parameters should I declare as sql placeholders?
中的问题更为有趣。
就笨拙的PDO库而言,您必须仅使用占位符来存储数据。 但是在动态创建SQL查询方面,您必须为查询的每个变量部分使用适当的占位符。