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