php - 当用户看到通知时更新阅读列

标签 php mysql sql

所以我有一个通知系统,想检查用户是否阅读了他们的通知。所以我添加了一个 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/

相关文章:

mysql - #1064 - 您的 SQL 语法在 '' 附近有错误

php - CakePHP 查询 - 复杂的 AND/OR 条件

c# - 如何拆分逗号分隔值

javascript - 使用 DirectoryIterator 将图像从脚本加载到 Flexbox 中

php - 如何使用CSS在表单输入字段中点击搜索图标

php - 第一次打开时出错,PHP

php - 在 PHP 脚本中在哪里存储 MySQL 凭据?

php - mongodb聚合框架按两个字段分组

php - IMAP_OPEN 使网页崩溃

php - 我应该在 php cli 中的每个查询后关闭 mysql_connection 吗?