更新随机选择的行

时间:2015-10-14 22:55:01

标签: php mysql random

我正在构建一个代码,每次刷新页面或在屏幕上回答问题时都会显示一个随机问题。这是我在conexao.php文件中的代码,用于选择随机问题:

$research = mysqli_query ($connection, "SELECT * FROM enquete ORDER BY RAND() LIMIT 1");
$result = mysqli_fetch_array($research);
$info = $result;

上面的代码可以很好地从我的" enquete"中选择一个随机问题。表

我遇到的问题是问题得到解答。这是我显示问题的代码,并显示2个提交按钮(是/否):

<?php
include 'conexao.php';

$contador = 0;

do{

echo $info['pergunta'];

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

mysqli_query($connection,"UPDATE enquete SET sim = sim + 1 WHERE pergunta = '".$info['pergunta']."'") ;
echo "<br/>".$info['sim']."people who answered YES <br/>";
echo $info['nao']." people who answered NO <br/>";

}


$contador++;

} while ($contador < 1);

?>
<html>
<head>

<link rel="stylesheet" type="text/css" href="estilo.css">
<link async href="http://fonts.googleapis.com/css?family=Aclonica"
rel="stylesheet" type="text/css"/>
</head>
<div class="wrapper">
<form action="" method="post">
<input type="submit" class="botao-css" value="Sim" name="sim"/><br/>
<input type="submit" class="botao-css" value="Não" name="votarnao"/><br/>

</form>
</div>
</html>

我遇到的问题如下:上面的代码似乎可以将1添加到已回答的问题中(上例中的“是”),但不是在屏幕上显示的当前随机问题上添加1而是添加1下一个问题将会显示出来。

例如:

  • 问题1:天空是蓝色的? (如果是,则会在下一个问题中添加1&#34; sim&#34;行而不是添加到此问题。)
  • 问题2:你喝水了吗? (由于上一个问题,它已经得到1,如果我对这一个问题是肯定的,那么它会在下一个问题中添加1&#34;是&#34;行)

当然,我打算做的是让系统添加1到&#34;是&#34;当前问题的一行,而不是下一个问题。

如果有人可以帮我提供相关提示,我会非常高兴。

2 个答案:

答案 0 :(得分:4)

首先,我认为您需要在表单中添加一个字段,以确定哪个问题与提交相关:

<form action="" method="post">
<input type="hidden" name="pergunta" value="<?= $info['pergunta'] ?>" />
<input type="submit" class="botao-css" value="Sim" name="sim"/><br/>
<input type="submit" class="botao-css" value="Não" name="votarnao"/><br/>
</form>

然后你需要使用它,但为了防止SQL注入,你应该确保它只能是一个整数:

mysqli_query($connection,"UPDATE enquete SET sim = sim + 1 WHERE pergunta = ".(int) $_POST['pergunta']) ;

$info将是有关从conexao.php获得的下一个问题的信息。 $_POST将是上次提交的数据。因此,如果您指的是最后一个问题,那么根本不使用$info是有道理的。

注意:如果pergunta不是整数,则应使用预准备语句来防止SQL注入。 (在这种情况下,可以用id代替pergunta)

答案 1 :(得分:0)

谢谢你的工作。我使用了post和一个int值(建议的行ID)。这是我如何使代码工作。

根据建议添加此行的更新表单:

`<input type="hidden" name="pergunta" value="<?= $info['id'] ?>" />`

并将查询更新为:

`mysqli_query($connection,"UPDATE enquete SET sim = sim + 1 WHERE id = ".(int) $_POST['pergunta']) ;`

现在它在屏幕上更新问题。谢谢。