每次声明为true时,我都试图用1更新数据库中的字段。我不确定该怎么做。使用我的以下代码,我不确定这个问题(虽然很多谷歌搜索):
我没有收到任何错误消息,但它不起作用。我究竟做错了什么?
我的代码看起来像这样($ id变量是正确的打印出来的,它有“正确”的值,$ dbh也设置了正确的连接):
$stmt = $dbh->prepare("UPDATE rating SET vote = vote+1 WHERE rel_id_product = ':id'");
$stmt->bindParam(':id', $id, PDO::PARAM_STR);
$stmt->execute();
答案 0 :(得分:1)
不要引用占位符。当需要“插入”您在查询中使用的值时,PDO将为您执行此操作:
... WHERE rel_id_product = :id
^^^--- no quotes
此外,请var_dump($stmt->execute)
看看你得到了什么。如果它是布尔值false,则查询失败。您还假设准备调用已成功并尝试执行它,无论如何。永远不要假设数据库操作已经成功。即使SQL语法是完美的,还有太多其他原因可以让事情变得无法检查。