我正在尝试在表格中选择一个变量列名,但这似乎不起作用:
$reponse = $bdd->prepare('SELECT :day AS day FROM TABLE WHERE id= :id');
$reponse->execute(array('day' => 'monday', 'id' => '5'));
$day = $reponse->fetch();
即使将'day'设置为我的表(星期一)中确定的已知元素,它也不起作用。同样的id。
有人知道如何解决这个问题吗?
我没有php错误输出,只有一个mysql查询错误(没有显示)。 通过星期一替换':day',我有一个输出。
答案 0 :(得分:1)
表和列名称不能由PDO中的参数替换。您需要手动过滤和清理数据。
答案 1 :(得分:1)
由于SQL的解析顺序,根本无法将绑定参数用作SQL语句的一部分(例如,列或表名)。
相反,您需要使用字符串连接来构建字符串。如果:day
的值来自外部源(数据库,POST参数等),为了避免可能的SQL注入攻击,您需要验证输入以确保它是有效的列或表达