将MySQL数据标记为“已读”

时间:2012-03-18 19:54:54

标签: php mysql

我正在为我的网站上的用户提供通知系统。我有一个“事件”表,用户在发生这些事件时会收到通知(朋友请求,新关注者,评论等)。有没有办法在事件表的//读取列中为特定事件(根据用户请求信息)插入一个值,例如说0表示未读,1表示读取?那么它不再是值得通知的了吗?

2 个答案:

答案 0 :(得分:4)

是的。只需将您的列存储为TINYINT(1)即可。正如预期的那样,MySQL文本TRUE的计算结果为1,FALSE的计算结果为0。

(假设您的事件表存储了分配给用户的各个事件,而不是可能发生的常规事件类型。)

用法

SELECT * FROM events WHERE user_id = [user_id] AND read = 0    #list all for user
UPDATE events SET read = 1 WHERE event_id = [event_id]         #mark as read

答案 1 :(得分:0)

创建类型为isRead的{​​{1}},并将其设置为0和1,以表示特定事件(即读取的行)。 如果您将每个事件,评论,帖子等映射到每个用户,那么您需要一个单独的表tinyInt包含外键keysTrackerevent_idcomment_id,然后a post_id可以通过在查询语句中链接用户的读/未读状态来映射用户的读/未读状态。

user_id

这样,如果您有一组共同的事件,例如“选举2011”,您确保不是在另一个表中添加重复的事件条目,而只添加$query="SELECT * FROM event JOIN keysTracker ON event.event_id=keysTracker.event_id WHERE user_id='6' AND isRead='1' "; 的新user_id

整个过程称为规范化,建议您阅读more here