PDO中的“SELECT:parameter FROM ..”

时间:2014-09-29 22:14:23

标签: php mysql pdo

我正在尝试在表格中选择一个变量列名,但这似乎不起作用:

$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',我有一个输出。

2 个答案:

答案 0 :(得分:1)

表和列名称不能由PDO中的参数替换。您需要手动过滤和清理数据。

答案 1 :(得分:1)

由于SQL的解析顺序,根本无法将绑定参数用作SQL语句的一部分(例如,列或表名)。

相反,您需要使用字符串连接来构建字符串。如果:day的值来自外部源(数据库,POST参数等),为了避免可能的SQL注入攻击,您需要验证输入以确保它是有效的列或表达