我将用户ID值存储在以|分隔的表字段中(user_id1 | user_id2 | user_id3 | user_id17)
将在某些位置添加和删除此字段中的用户ID。
如何使用查询检查字段中是否存在当前用户ID?
它当然需要完全匹配。无法查找user_id1
并找到user_id17
。
我知道我可以使用SELECT查询,爆炸该字段,然后使用in_array
但是如果有办法使用查询来做它会更好。
我想我会解释我在做什么:我为一个小型私人网站(7个用户)创建了一个论坛,但是将其编码为更大规模。
我的表结构非常好:forum_categories,forum_topics,forum_posts。在表之间使用外键来删除和更新查询。
我正在寻求帮助的是将每个用户的主题标记为未读。我可以使用topic_id和amp;创建一个新表。 user_id,每一个都是一个新行,但对于很多用户来说并不好用。主题。
如果有人有更好的解决方案,我就是全力以赴。或者可以向我证明每个user_id有一行是最好的方式然后我会更愿意这样做。
答案 0 :(得分:1)
我认为你想跟踪阅读信息,而不是相反。如果您跟踪了未读消息,则每次添加用户时,您都必须将该用户添加到每个主题"未读列表"。
我像我的评论建议那样研究了SMF。他们使用单独的表来跟踪阅读消息。
您需要一个包含user_id
和topic_id
的简单表格。当用户阅读主题时,请确保该用户的表格中有一行。
使用单独表格的另一个原因。查询数据库中的2个int值比使用LIKE %
语句要快得多。