繁体   English   中英

如何更新表行并在行字段中添加+1?

[英]How to update table row and add + 1 in row field?

这几天我有麻烦。 仍在学习..无论如何-通过此输入

form action='votes.php' method='post'>
<input type='hidden' name='WHATNAME' value='WHAT?'/>
<input class='voteUp' type='submit' name='submitUp' value='+'/>
</form>

我要更新表! 我想用+ 1更新“ voteup”文件,仅此而已。 这里是表答案

CREATE TABLE IF NOT EXISTS `answers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `answer` text,
  `questionId` int(11) NOT NULL,
  `user` varchar(255),
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `ip` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `voteup` int(11) NOT NULL,
  PRIMARY KEY (`id`)
  );

这是第二张桌子的问题

CREATE TABLE IF NOT EXISTS `questions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `question` text NOT NULL,
  `user` varchar(255) NOT NULL,
  `datum` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
)

因此,有了这个,我有了一个表格问题,每个问题可能都有很多答案。 因此,我想并且我需要让某人可以为他认为正确的每个答案投票(投票)。 到目前为止,我只投票给一个答案就取得了成功,如果我给出第二个答案,它给了我一些奇怪的多和双计数数字。 这是来自文件Votes.php的mysql查询,它更新了我的表决方式,但是仅当我有一个问题时!

if (isset($_POST['submitUp'])) {  

$ip = $_SERVER['REMOTE_ADDR'];
$sql="INSERT INTO answers
SET voteup = voteup + 1,
ip = '$ip'  
";

这是选择计数脚本,它显示了多少票

$ip = $_SERVER['REMOTE_ADDR'];
$results = mysqli_query($con,"SELECT SUM(voteup) as voteup FROM answers ");

while($row = mysqli_fetch_array($results))
  {

  echo $row['voteup'];

  }

如何为具有不同问题ID的每个答案更新表决字段。 我尝试了几种组合,但是什么也没有! 我希望我很清楚。 谢谢你!

您还需要将问题ID发布到脚本中:

<form action='votes.php' method='post'>
<input type='hidden' name='question_id' value='<?php echo $question_id; ?>'/>
<input type='hidden' name='answer_id' value='<?php echo $answer_id; ?>'/>
<input class='voteUp' type='submit' name='submitUp' value='+'/>
</form>

并且Votes.php应该基于这些值进行更新(还要查找保护您的查询的地址: http ://www.php.net/manual/en/mysqli.real-escape-string.php):

if (isset($_POST['submitUp'])) {  
  $ip = $_SERVER['REMOTE_ADDR'];
  $question_id = mysqli_real_escape_string($connection, $_POST['question_id']);
  $anwer_id = mysqli_real_escape_string($connection, $_POST['answer_id']);
  $sql="UPDATE answers
        SET voteup = voteup + 1,
        ip = '$ip'
        WHERE id = $answer_id
        AND questionId = $question_id
        ";
}

请注意,在这种情况下,IP仅反映上次投票的IP。 要记录每个Upvote的IP,您需要一个单独的表来存储Upvote IP。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM