“测验”当前包含测验ID,名称,描述和主题(来自主题表)。PDO MySQL更新在编辑页面上无法正常工作
我想设置一个简单的“编辑测验”页面。
问题是 - 如果测验称为“Quiz1”,并且我将编辑页面上的测验名称更改为“Quiz2”,一旦点击保存按钮,它将恢复为“测验1”而不存储。
我已经设置了回声,如代码中所示,以检查它们实际上是否存储,单击保存按钮后将显示'Quiz1',但该值不存储在我的数据库中。 SQL已经在PhpMyAdmin上测试过,似乎也可以工作。
PHP代码:
<? if (!empty($_POST)) {
$id = $_POST['qzid'];
$qzname = $_POST['qzname'];
$qzdesc = $_POST['qzdesc'];
$ctname = $_POST['ctname'];
$checkQuiz = $db->prepare("SELECT qz_name FROM quizzes WHERE qz_name = :qz_name");
$checkQuiz->execute(array(':qz_name' => $qzname));
$qzChanged = "Quiz details updated successfully";
$sql = "UPDATE quizzes SET `qz_name` = :qzname, `qz_desc` = :qzdesc WHERE `quizzes`.`id` = :qzid";
$q = $db->prepare($sql);
$q->execute(array(':qzname' => $qzname, ':qzdesc' => $qzdesc, ':qzid' => $id));
echo $qzname, $qzdesc; //THIS RETURNS THE CHANGED VALUES
}?>
HTML代码:
<form action="edit_quiz.php?id=<?php echo $row['id'] ?>" method="POST">
<input type="hidden" name="qzid" id="qzid" value=""/>
<!-- selection box -->
<p>Topic Name:
<select class="form-control" name="ctname" id="ctname">
<?php
while ($tresult = $stmt->fetch()) {
echo "<option>" . $tresult["ct_name"] . "</option>";
}
?>
</select>
</p>
<p>Quiz Name: <input type="text" name="qzname" value="<?php echo $row['qz_name']; ?>"/></p>
<p>Quiz Description: <textarea name="qzdesc" value=""/><?php echo $row['qz_desc']; ?> </textarea></p>
<input type="submit" class="btn btn-success" value="Save"/> <a class="btn" href="quizzes.php">Back</a>
请注意,该代码已经被简化。 任何帮助,我将非常感谢非常感谢!
你的update语句中是否需要“localhost”?那实际上是你的数据库的名字?既然你没有在select语句中指定数据库名称,我会尝试删除第一个 – Trey
对不起,这没有什么区别,只是我的不一致! (更新我的代码,以避免混淆) – StackMeUp123
qzid隐藏输入如何,它似乎没有一个值,所以它不知道哪一行更新 – Trey