0

每次声明为真时,我都试图用 1 更新我的数据库中的一个字段。我不确定该怎么做。使用我的以下代码,我不确定这个问题(尽管有很多谷歌搜索):

  1. 如何将现有字段值加 1(投票 = 投票 + 1)
  2. where 语句与 bindParam 结合。

我没有收到任何错误消息,尽管它不起作用。我究竟做错了什么?

我的代码看起来像这样($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();
4

1 回答 1

1

不要引用占位符。当需要“插入”您在查询中使用的值时,PDO 会在必要时为您执行此操作:

... WHERE rel_id_product = :id
                           ^^^--- no quotes

另外,做var_dump($stmt->execute),看看你得到什么。如果它是布尔值 false,则查询失败。您还假设准备调用已成功并尝试执行它。永远不要假设数据库操作已经成功。即使 SQL 语法是完美的,也有太多其他原因导致事情发生爆炸而不进行检查。

于 2012-05-06T20:40:32.393 回答