【问题标题】:Can't insert data from a form, to MySQL; with PHP无法将表单中的数据插入 MySQL;用 PHP
【发布时间】: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);

标签: php html mysql wamp


【解决方案1】:

尝试使用 mysqli_error($connection_Var); 打印错误消息 http://php.net/manual/en/mysqli.error.php

根据我的经验,通常表不存在、语法错误或用户没有适当的权限。我还建议您使用 PHP PDO 进行数据库连接,它更健壮,而且 MySQLi 有点过时。 http://php.net/manual/en/book.pdo.php

【讨论】:

  • 嗨,我发现了问题。显然,它是 Wampserver,因为在全新安装后,表单中的数据已被接受。我知道 MySQLi 已经老了,这只是一个学校项目,所以我不需要任何专业的东西。而且,我们还没有学到这一点。无论如何,感谢您的帮助,我将继续介绍如何显示错误消息。
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
相关资源
最近更新 更多