Php 如何添加MySQL值来创建投票系统?
我目前正在尝试创建一个投票系统,允许用户向特定视频添加投票。我可以从数据库表中检索当前投票数,但我不知道如何将一个投票数添加到此总数中,然后在单击按钮时将此值重新插入数据库。任何帮助都将不胜感激 最好保存所有投票的历史记录,然后使用Php 如何添加MySQL值来创建投票系统?,php,Php,我目前正在尝试创建一个投票系统,允许用户向特定视频添加投票。我可以从数据库表中检索当前投票数,但我不知道如何将一个投票数添加到此总数中,然后在单击按钮时将此值重新插入数据库。任何帮助都将不胜感激 最好保存所有投票的历史记录,然后使用count(*)和groupby计算出总数 select answer, count(*) from vote group by answer; 如果两个人同时尝试投票,这将避免竞争条件,您可以在投票表中为用户id、会话id、ip地址等添加列,以便稍后查找可疑的投票
count(*)
和groupby
计算出总数
select answer, count(*) from vote group by answer;
如果两个人同时尝试投票,这将避免竞争条件,您可以在投票表中为用户id、会话id、ip地址等添加列,以便稍后查找可疑的投票模式。使用类似以下内容的mysql查询:
UPDATE table SET voteCount = voteCount+1 WHERE video = ?
投票数和用户投票数的单独表格 您可以尝试在数据库中自己的表中添加投票,例如:
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\u BY
,可以加快返回数据结果的速度
使用COUNT(*)或SUM()可能会发生减速:
其中为count(*)的行应该是速度改进的索引,所以表中的数据索引由于性能提高而增加。性能辩论:类似于
更新投票\u table SET vows=vows+1,其中video\u id=?
?+智能技术的一个。是的,它绝对是!但是,您将如何管理一个有否决权的系统?我梦想有一个关于使用这些技术进行实际数据库建模的wiki。@mpm有几种方法来处理投票否决。您可以为每个fow添加一个值为1或-1的分数字段,并使用sum(score)
而不是count(*)
,或者您可以有一个单独的向下投票表。