【发布时间】:2018-05-31 17:36:38
【问题描述】:
我不明白为什么表单不能向 MySQL 数据库提交数据。我什至没有任何错误,这将帮助我理解问题。 我尝试将操作方法更改为 GET,以查看表单是否接受数据,并且确实如此,信息会显示在 URL 中,但它不会在数据库中插入任何内容。 谢谢。
这是插入函数(位于 info_file.php 中):
function insert_records($employee_id_fk,$license_num, $expiry_date,
$aquired_date, $penalty_point)
{
global $connection_Var;
mysqli_query($connection_Var,
"INSERT INTO bus_driver
(`employee_id_fk`,`license_num`,`expiry_date`,
`aquired_date`,`penalty_point`)
VALUES ('".$employee_id_fk."', '".$license_num."','".
$expiry_date."','".$aquired_date."','".$penalty_point."')");
}
这是将由表单执行的代码(在 new_instance.php 中):
<?php
include 'info_file.php';
Open_Connection();
insert_records($_POST["employee_id_fk"],$_POST["license_num"],
$_POST["expiry_date"],$_POST["aquired_date"],
$_POST["penalty_point"]);
header( 'Location:view.php');
Close_Connection();
?>
这是表格:
<form action="new_instance.php" method="post">
<p>Employee ID: <input type="text" name="employee_id_fk"></p>
<p>License Number: <input type="text" name="license_num"></p>
<p>Expiry date: <input type="text" name="expiry_date"></p>
<p>Aquired data: <input type="text" name="aquired_date"></p>
<p>Penalty point: <input type="text" name="penalty_point"></p>
<input type="submit" value="Submit" />
</form>
第一次使用堆栈溢出,如果格式错误,请见谅。另外,如果有办法附加文件(我想不是出于安全目的),我不会这样做,因为它是一个包含多个文件的项目,我只需要使用我认为有问题的代码。
【问题讨论】:
-
您的代码非常不安全。使用准备好的语句,或者至少转义用户输入字符串...
-
您没有检查
mysqli_query的返回值。如果失败,它将返回false。然后您将使用mysqli_error($connection_Var)查看数据库中的错误。另请注意,此代码对 SQL 注入非常开放,这使得错误更有可能发生。 -
能否将这两行添加到脚本的顶部,看看是否会引发错误?
error_reporting(E_ALL); ini_set('display_errors', 1);