【发布时间】:2014-03-31 01:38:42
【问题描述】:
好的,我对下面的插入语句有疑问:(如果你想要整个代码,请告诉我)
$required = array('exam_id', 'subject', 'exam_date');
$error = false;
foreach($required as $field) {
if ( !empty($_POST['insert'])) {
$InsertQuery = "INSERT INTO Exam (exam_id, subject, exam_date) VALUES
($_POST[uexam_id],$_POST[usubject],$_POST[uexam_date])";
$result = mysql_query($InsertQuery, $con);
if (!$result) { $error = true; }
}
}
if ($error) {
die ("All fields are required! <a href='examisud.php'> Back to Form </a>");
}
好的,所以基本上我希望所有字段(考试、科目和考试日期)都是必填字段。如果用户没有填写某个字段,则会弹出一个错误,要求他们返回并重新填写所有字段)。 这样,它就起作用了。但是,当我对其进行测试并填写所有字段时,也会弹出错误,因此无论发生什么,插入都无法正常工作,到目前为止我所做的任何更改都会导致字段被插入,但验证不再有效。 任何帮助将不胜感激!
【问题讨论】:
-
您是否尝试过回显 $_POST[uexam_id]、$_POST[usubject] 和 $_POST[uexam_date] 的值以确保它们有效?似乎您应该在“usubject”、“uexam_date”等周围加上单引号。此外,您可以通过这种方式进行 sql 注入。在将值传递给查询之前,您需要过滤掉它们。
-
在实际执行查询之前进行测试!因此,在完成检查后检查所有元素是否存在且有效,然后运行查询!
-
三合会,不,这是个人项目,不用担心SQL注入!我一直忘记将其添加到问题中。我已经用单引号围绕 uexam_id、usubject 等进行了尝试,但我仍然遇到同样的问题。而且我确信这些值是有效的,我有一个没有验证的旧系统或必填字段,整个事情运行良好,一旦我开始使用 foreach 和数组和错误,这种情况就开始发生了。
标签: php forms insert field required