所以我有一个通知系统,想检查用户是否阅读了他们的通知。所以我添加了一个 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'];
}
最佳答案
您的问题是 read
列是 Reserved Word .
你想要做的是像这样用反引号把它包起来:
$mkrd = $con->prepare("UPDATE notifications SET `read` = 1 WHERE id = :hid");
旁注:您实际上不需要在查询中使用结束逗号 (;
) :-)
关于php - 当用户看到通知时更新阅读列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24815766/