按照PHP文档PDO ::准备()增加了引号,所有的参数,使您不必担心这样做:与PDO加引号处理::准备()
“准备语句的参数不需要被引用;驱动程序自动处理这个,如果应用程序独占使用预准备语句,开发人员可以确保不会发生SQL注入(但是,如果查询的其他部分正在建立与未转义的输入,SQL注入仍然是可能的)。“
对我来说这个问题是我构建查询和数据库结构的方式。通常,SQL语句的FROM部分不需要参数化,因为Table可能会由直接用户输入定义。然而,我的代码在某些地方是这种情况,因此我对参数化版本感到更加舒适。
而不是 SELECT * FROM tablename WHERE?=?
所以我的问题是这样的,是可以防止我的PDO对象从周围加入了FROM参数,以便我没有得到我的脸上泛起SQL错误,引号?或者我必须以不同的方式做到这一点。
究竟是什么问题? – jeroen 2012-01-16 18:01:10
它不一定会加引号。支持本机预处理语句的驱动程序将保留文字'?',数据库服务器执行替换。 - 但是你需要解释你的代码在做什么以及为什么这里有问题。在FROM子句中添加“?”或“:placeholder”是字面字符串,不是绑定参数。 – mario 2012-01-16 18:03:12
对不起,我不小心撞到进入之前我打完的表名称中使用PDO/MySQL的准备语句作为参数]问题 – hamalnamal 2012-01-16 18:04:33