0

我目前正在尝试创建一个投票系统,允许用户为特定视频添加投票。我可以从数据库表中检索当前的投票数,但我不知道如何在这个总数中加一,然后在单击按钮时将此值重新插入数据库。任何帮助将非常感激!

4

3 回答 3

8

最好保留所有投票的历史记录,然后使用count(*)和计算总数group by

select answer, count(*) from vote group by answer;

如果两个人尝试同时投票,这将避免竞争条件,并且您可以在投票表中添加用户用户 ID、会话 ID、IP 地址等列,以便以后查找可疑的投票模式。

于 2013-02-24T23:00:21.243 回答
2

使用与此类似的 mysql 查询:

UPDATE table SET voteCount = voteCount+1 WHERE video = ?
于 2013-02-24T23:02:54.987 回答
1

单独的计票和用户投票表。

您可以尝试在数据库中自己的表中添加投票,例如:

INSERT INTO votes_tables (id, user_id, video_id, vote_up, vote_down, date) VALUES (NULL, '5', '10', '1', '', NOW());

在另一个表中,您有视频存储列表仅视频投票的值(增量,减量状态):

点赞:

UPDATE votes_table SET votes = votes + 1 WHERE video_id = ?

否决票:

UPDATE votes_table SET votes = votes - 1 WHERE video_id = ?

这种方法可以分开谁和什么时候被投票+投票统计。这种方法避免在使用GROUP_BY中可以加快数据的返回结果。

使用 COUNT(*) 或 SUM() 可能会降低速度:

count(*) 所在的行应该是 INDEX 以提高速度,因此由于性能加快,表中数据的索引增加了。性能之争:是否可以加快 MySQL 中的 sum()?

于 2013-02-24T23:03:59.323 回答