我在mysql数据库中有两个表
tbl_user_votes
中有三个字段1. comment_id, 2. user_id, 3.vote_type ('L' OR 'D') (L for Like, D For Dislike)
我有一个分页计划,根据我的每个网页都有20条评论。每个评论都有一个喜欢和不喜欢的按钮。当登录用户点击“赞或不喜欢”时,会在tbl_users_votes, 1. comment_id, 2. user_id, 3. vote_type (L OR D).
我希望当页面重新加载时,所有评论他点击“喜欢”或“不喜欢”,必须在评论下显示“你喜欢”或“你不喜欢”。
我的问题是,我不打算为这个问题制作一个有效的算法。 我认为这样的解决方案。
我必须为每个评论运行一个SQL查询,例如"SELECT * From tbl_user_votes where comment_id = xyz and user_id = xyz"
,然后检查是否存在针对该user_id和comment_id的某些值。如果存在,那么我检查每个评论的值和Put和If else条件,如此
If(vote_found)
If(vote_type=='L')
echo "You Like"
else if(vote_type=='D')
echo "You Dislike'
但我认为这不是一种有效的方法。它看起来非常耗费内存和时间,好像页面上有20个注释,每个注释对数据库的SQL查询都非常昂贵。
任何人都可以有更好,更有效的方法来处理这个问题。
答案 0 :(得分:0)
我建议你使用一个查询,它也可以让你在一个记录集中投票。
SELECT
tbl_comments.*,
tbl_users.*
FROM
tbl_comments LEFT JOIN tbl_users
ON tbl_comments.user_id = tbl_users.user_id2
WHERE
(tbl_users.user_id="xxx")
OR (tbl_users.user_id IS NULL);
我不知道tbl_users
中你的索引是什么,所以我假设user_id2
,如果需要就改变它。
使用LEFT JOIN
将为您提供该用户的所有评论,如果存在,则表示用户投票。如果tbl_comments.user_id
为NULL
,则表示没有评论。