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

标签 php mysql count row

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

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

我想更新表格!我想用 + 1 更新“投票”,仅此而已。这是表格答案

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 仅反射(reflect)最后一次投票的 IP。要记录每次点赞的 IP,您需要一个单独的表来存储点赞 IP。

关于php - 如何更新表行并在行字段中添加+1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21499827/

相关文章:

php - 使用Doctrine作为水合器的Zend Framework 2形式问题

php - 从字符串中删除最后两个单词

javascript - 从mysql加载图像的正确方法

php - mysql_num_rows PHP

PHP/jQuery - 单引号在 Ajax 调用中加倍

mysql - 有没有办法通过引入密码变量来更改当前用户的密码?

php - Laravel:MySQL 查询在一段时间后变得更慢。可能的原因有哪些?

mysql - 在其他表中按 id 对 count 和 fetch name 进行排序查询

mysql - 在 MySQL 中一起使用 Distinct、Count 和 Group

count - Twig 中的子串计数