我刚刚开始将我所有网站的代码转换为准备好的语句,以获得额外的安全缓冲,但我发现自己遇到了同样的问题。
经过一些阅读后,我决定在所有选择查询中使用预准备语句,但是我不确定这些查询中的所有变量是否都需要在预准备语句中用作“参数”。
例如:
- 其中some_column IS NULL
- 其中some_column = $ _SESSION ['some-session-var']
- 其中some_column IN($ someArray)
醇>
另外,是否有某种方法可以为每个条件赋予“名称”而不是使用问号?我觉得我之前在文档中看过这个,但是从那以后我就没有运气了。
例如:Where city_name = :cityName
。如果是这样,我将如何在这里绑定参数?
谢谢,
埃文
答案 0 :(得分:0)
是。进入查询的所有数据都应通过占位符添加。 否则就没有任何安全保障。
虽然准备好的陈述非常有限并且只支持标量值,所以,你的第一个和第三个例子需要额外的编码(例子可以在标签下找到)
您提到的命名占位符属于PDO,mysqli不支持它们