在 MySQL 中存储数组:另一种方法
为了防止评论评级系统中的多次投票,您希望存储一组用户MySQL 字段中的 ID。虽然 MySQL 不直接支持这一点,但请考虑以下替代方法:
数据库架构
创建三个表:
CREATE TABLE comments ( comment_id int, body varchar(100), PRIMARY KEY (comment_id) ); CREATE TABLE users ( user_id int, username varchar(20), PRIMARY KEY (user_id) ); CREATE TABLE comments_votes ( comment_id int, user_id int, vote_type int, PRIMARY KEY (comment_id, user_id) );
示例数据
INSERT INTO comments VALUES (1, 'first comment'); INSERT INTO comments VALUES (2, 'second comment'); INSERT INTO users VALUES (1, 'user_a'); INSERT INTO users VALUES (2, 'user_b'); INSERT INTO comments_votes VALUES (1, 1, 1); INSERT INTO comments_votes VALUES (2, 1, 1);
检查用户资格
要确定用户是否已经对特定评论进行投票,请使用一个简单的查询:
SELECT COUNT(*) FROM comments_votes WHERE comment_id = <comment id> AND user_id = <user id>;
此方法可以防止多次投票,因为 comments_votes 表上的主键约束可确保唯一性。
防止多次投票
如果用户已经投票,则根据查询结果禁用系统逻辑中的投票图标。
此方法的优点
以上是如何在不将数组存储在 MySQL 中的情况下防止评论评级系统中的多次投票?的详细内容。更多信息请关注PHP中文网其他相关文章!