【发布时间】:2026-01-27 22:10:01
【问题描述】:
我有 2 张与调查相关的表格。当用户回答每组问题然后点击提交按钮时,它会根据提交的表单循环每个答案,以便首先在数据库中检查,如果找到了 CustomerID 和 QuestionID,然后进行更新。如果未找到,请改为执行插入操作。
问题表
- 问题 ID (PK)
- 问题文本
ANSWERS表格
- 答案 ID (PK)
- 客户 ID (FK)
- 问题 ID (FK)
-
答案文本
<html> .... <form action="/db.php" method="POST"> <?php echo $questiontext[1]; ?><input type="text" name="answer1" id="answer1"> <?php echo $questiontext[2]; ?><input type="text" name="answer2" id="answer2"> <?php echo $questiontext[3]; ?><input type="text" name="answer3" id="answer3"> <?php echo $questiontext[4]; ?><input type="text" name="answer4" id="answer4"> <?php echo $questiontext[5]; ?><input type="text" name="answer5" id="answer5"> <?php echo $questiontext[6]; ?><input type="text" name="answer6" id="answer6"> <input type="submit" name="submit" id="submit" value="Submit"> </form> ... </html>
db.php
<?php
if(isset($_POST['submit'])) {
$cusid = intval($_POST['CustomerID']);
$answer1 = $db->real_escape_string($_POST['answer1']);
$answer2 = $db->real_escape_string($_POST['answer2']);
$answer3 = $db->real_escape_string($_POST['answer3']);
$answer4 = $db->real_escape_string($_POST['answer4']);
$answer5 = $db->real_escape_string($_POST['answer5']);
$answer6 = $db->real_escape_string($_POST['answer6']);
$sql = "INSERT INTO Answers (CustomerID, QuestionID, AnswerText) VALUES
('".$cusid."','".$quesid."','".$answer."')";
$res = $db->query($sql) or die ('Error: ' . mysqli_error($db));
}
?>
我的问题是:
- 如果使用数组和SQL查询没有找到CustomerID和QuestionID,如何将每个答案(1-6)一个一个更新,然后插入数据库,如果找到,则更新?
- 如何引用 QuestionID 以便与 HTML 和 PHP 中的 AnswerText 相关联?
【问题讨论】:
-
与您的问题无关,但您的代码易受 SQL 注入攻击。考虑一下如果有人将他们的答案设置为
answer'); DROP TABLE Answers' -
感谢您指出这一点。使用 $db->real_escape_string 会更好吗?
-
假设
$db类似于mysqli的一个实例,是的。