0

我正在建立一个网站,该网站具有类似于 SE 投票系统的功能。我试图限制用户在每个帖子中多次投票。

目前,我正在考虑在我的usermysql 数据库中拥有一个字段,该字段将保留id用户已经投票的 s 列表(对应于帖子)。每次用户投票时,都会根据当前帖子的id. 如果找到,则会显示一条错误消息,如果没有,则投票通过并且id现在是用户“已投票”列表的一部分。

这似乎是一种奇怪的做法。这是一种有效的方法吗?什么方法会更好/最好?

4

1 回答 1

3

我将创建一个名为 user_post 的单独表,其中包含 user_id 和 post_id - 事实上,您可以将这些列设置为多列主键。

当用户对帖子投票时,您可以使用以下查询:

REPLACE INTO user_post (user_id, post_id, vote) VALUES (:userId, :postId, :vote)

替换本质上是说“插入,除非存在唯一键冲突,如果有,则更新行”。或者,您可以使用:

INSERT IGNORE INTO user_post (user_id, post_id, vote) VALUES (:userId, :postId, :vote)

它本质上说“插入,除非存在唯一的密钥冲突,如果有,则忽略”(如果您只想保留第一个投票)。

于 2011-11-18T04:58:05.003 回答