EDIT 私はまだ文を準備していません。最初に機能をダウンさせたい。
フォーム提出でMySQLアップデートが表示されません(ただし、更新は正常に実行されます)
私は、ユーザーがデータベースから質問を表示して同時に更新できるページを作成しています。質問はテキストボックスにエコーされます。各質問/選択肢について、私はフォームと送信ボタンをエコーしています。変更が行われると、サブミット時にクエリが正常に実行され、ブラウザでリフレッシュすると変更が更新されます。ただし、更新ボタンを押すと、更新するのではなく古い結果が表示されます。私はここで何ができますか?フォームの送信後にヘッダーを更新するように設定しても動作しないようです。
コード
<?php include 'database.php'; include 'authenticate.php'; ?>
<?php
$questionText = $_POST['question'];
$qNum = $_POST['question_number'];
$query = "SELECT * FROM `questions`";
$result = $mysqli->query($query);
?>
<?php
if (isset($_POST['update'])) {
$questionQuery = "UPDATE `questions` SET text = '$questionText' WHERE question_number = '$qNum'";
$mysqli->query($questionQuery) or die("Query failed: " . $mysqli->error.__LINE__);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Update</title>
</head>
<body>
<?php while($row = $result->fetch_assoc()): ?>
<?php $questionNumber = $row['question_number']; ?>
<?php echo "<form action='update.php' method='post'>"; ?>
<?php echo $questionNumber; ?> <input type="text" name="question" value="<?php echo $row['text']; ?>" style="width: 75%" />
<input type="hidden" name="question_number" value="<?php echo $row['question_number']; ?>" /><br>
<?php
$query1 = "SELECT * FROM `choices` WHERE question_number = '$questionNumber'";
$result1 = $mysqli->query($query1);
//echo out choices right under each question
while ($row1 = $result1->fetch_assoc()) {
$text = $row1['text'];
if ($row1['is_correct'] == 1) {
echo "<input type='text' name='choice' value='$text' style='border: 4px solid lightgreen' />" . "<br>";
} else {
echo "<input type='text' name='choice' value='$text' style='border: 4px solid red' />" . "<br>";
}
}
?>
<input type="submit" name="update" value="Update" />
<?php echo "</form>"; ?>
<?php echo "<br>"; ?>
<?php endwhile; ?>
データは更新されていますが、ウェブページは更新されていない場合は、キャッシュに問題がある可能性があります。 –
[Little Bobby](http://bobby-tables.com/)によると*** [あなたのスクリプトはSQLインジェクション攻撃の危険にさらされています。](http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php)*** [MySQLi](http://php.net/manual)の[prepared](http://en.wikipedia.org/wiki/Prepared_statement)ステートメントについて学びます。 /en/mysqli.quickstart.prepared-statements.php)。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! [それを信じていない?](http://stackoverflow.com/q/38297105/1011527) –
私はこれで多くのChromeを実行します。私のハック/解決策は、URLの最後に何かを置くことで、ブラウザにキャッシュされたコピーを無視させることです。 '<?php echo"