Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何添加MySQL值来创建投票系统?_Php - Fatal编程技术网

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(*)
,或者您可以有一个单独的向下投票表。