簡體   English   中英

更新隨機選擇的行

[英]Update a row that was selected randomly

我正在構建一個代碼,每次刷新頁面或在屏幕上回答問題時都會顯示一個隨機問題。 這是我在conexao.php文件中選擇隨機問題的代碼:

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

上面的代碼可以很好地從我的“入隊”表中選擇一個隨機問題。

我的問題是問題得到答復時。 這是我顯示問題的代碼,並顯示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”添加到下一個問題“ sim”行,而不是添加到該行。)
  • 問題2:您喝水嗎? (由於上一個問題,它已經獲得了1,如果我認為是,則將其加到下一個問題“是”行中)

當然,我打算做的是讓系統在當前問題的“是”行中添加1,而不是在下一個問題中添加1。

如果有人可以幫助我給出提示,我將非常高興。

首先,我認為您需要在表單中添加一個字段以標識哪個問題與提交有關:

<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)

謝謝你的工作。 我使用了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']) ;`

現在它更新屏幕上的問題。 謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM