【问题标题】:Updating read column when user sees notification当用户看到通知时更新阅读列
【发布时间】:2014-07-18 00:49:15
【问题描述】:

所以我有一个通知系统,并想检查用户是否阅读了他们的通知。所以我添加了read 行。如果值为0,则为未读,反之则为被读。所以在我的foreach 循环中,显示通知这就是我将其标记为已读的方式

//Mark as read
$mkrd = $con->prepare("UPDATE notifications SET read = 1 WHERE id = :hid;");
$mkrd->bindValue(':hid', $notification['id']);
$mkrd->execute();

我相信循环会循环,当用户查看它时,它会更新为1。现在这是问题,由于某种原因它不会更新。没有 PHP 错误或 MYSQL 错误。我确定我做的一切都是对的,有什么想法吗?还有更好的方法吗?

这是循环

foreach($notifications as $notification) {
     $notification;
     $readntf = 1;
     //Mark as read
     $mkrd = $con->prepare("UPDATE notifications SET read = 1 WHERE id = :hid;");
     $mkrd->bindValue(':hid', $notification['id']);
     $mkrd->execute();
echo $notification['type'];
}

【问题讨论】:

  • 您需要提供更多信息才能获得有用的答案。你是如何进入这段代码的?你怎么知道这些行肯定被执行了?
  • 这看起来不错,但我们必须在你的循环上下文中看到它才能看到它是如何执行的。
  • 我使用var_dump获取查询,语句后我也回显,似乎一直在进行@esqew
  • 只是为了过去,如果您从查询中删除 ; 会发生什么。
  • 不幸的是,同样的问题。 read 不更新 @Darren

标签: php mysql sql


【解决方案1】:

您的问题是read 列是Reserved Word

你想要做的是像这样用反引号包裹它:

 $mkrd = $con->prepare("UPDATE notifications SET `read` = 1 WHERE id = :hid");

旁注:您实际上并不需要在查询中使用结束逗号 (;) :-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多