Where子句中的PDO SQL查询错误

时间:2015-07-24 13:09:53

标签: php mysql sql pdo

您好我在尝试更新数据库时遇到以下错误:

  

致命错误:未捕获的异常' PDOException'消息' SQLSTATE [42S22]:未找到列:1054未知列'' 1''在' where子句''

我通过POST获得三个变量它们是:

a)我要改变的栏目

b)列的新值

c)要更改哪一行的ID ...

我正在使用PDO,这是我的带有参数绑定和执行的查询:

$stmt = $db->prepare('UPDATE `artists` SET `:spalte` = `:wert` WHERE  `id` = `:pk` ');
$stmt->bindParam(':spalte', $name);
$stmt->bindParam(':wert', $value);
$stmt->bindParam(':pk', $pk);
$stmt->execute();

我希望有人能理解这个错误...

最好的问候

戴夫

1 个答案:

答案 0 :(得分:0)

  

您只能对值使用预准备语句参数,而不能使用字段名称。 - Vatev

确切地说,如果你想从变量中输入字段名,那么为什么不直接把它放在你的sql中。

这应该可以解决问题。

$stmt = $db->prepare('UPDATE `artists` SET `'.$name.'` = :wert WHERE  `id` = :pk ');

要清理列名称,您可以使用PDO::quote