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) –
크롬으로 많이 실행됩니다. 내 해킹/해법은 URL 끝 부분에 고유 한 것을 넣어 브라우저가 캐시 된 사본을 무시하도록하는 것입니다. ' php echo "