使用PHP将HTML表单数据插入MySQL数据库

使用PHP将HTML表单数据插入MySQL数据库,html,mysql,database,Html,Mysql,Database,我只是想弄清楚将表单数据插入数据库背后的逻辑。下面的代码load.php工作正常。然而,我在process.php中收到了一个语法错误,而且我不确定我的插入代码是否正确。我也怀疑这个代码是安全的,在使用数据库时,我应该考虑的关键安全因素是什么?我知道我问了很多问题,但我只是想了解整个情况。如果您有任何建议和想法,我将不胜感激 谢谢 **//process.php** <?php require ("load.php"); $fname= $_POST['fname']; $lname=

我只是想弄清楚将表单数据插入数据库背后的逻辑。下面的代码load.php工作正常。然而,我在process.php中收到了一个语法错误,而且我不确定我的插入代码是否正确。我也怀疑这个代码是安全的,在使用数据库时,我应该考虑的关键安全因素是什么?我知道我问了很多问题,但我只是想了解整个情况。如果您有任何建议和想法,我将不胜感激

谢谢

**//process.php**

<?php
require ("load.php");
$fname= $_POST['fname'];
$lname= $_POST['lname'];

$sql = "INSERT INTO registration (firstname, lastname) VALUES ('$_POST[fname]','$_POST[lname]')";
if (mysqli_query($conn, $sql)) {
      echo "New record created successfully";
} else {
      echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>



**//load.php**


    <?php
    $servername = "localhost";
    $database = "registration";
    $username = "root";
    $password = "";

    $conn = mysqli_connect($servername, $username, $password, $database);
    if (!$conn) {
          die("Connection failed: " . mysqli_connect_error());
    }

    echo "Connected successfully";

    ?>




**//index.php**

<?php require ("load.php"); ?>

<html>
   <head>
      <title>Registration Form</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   </head>
   <body>
      <h3>Registration Form</h3>
      <form name="registration" method="post" action="process.php">
      <table border="0" cellspacing="2" cellpadding="2">
         <tr><td>First Name:</td><td><input type="text" name="fname"></td></tr>
         <tr><td>Last Name:</td><td><input type="text" name="lname"></td></tr>
         <tr><td>&nbsp;</td><td><input type="submit" name="submit" value="Register"></td></tr>
      </table>
      </form>
   </body>
</html>

尝试以下process.php代码 这将起作用

require ("load.php");

$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname)    VALUES (?, ?)");
$stmt->bind_param("ss", $firstname, $lastname);

$fname= $_POST['fname'];
$lname= $_POST['lname'];


if ($stmt->execute()) {
      echo "New record created successfully";
} 

$stmt->close();

不安全您的脚本甚至有被使用的风险。我在进程中不知何故收到一个语法错误。php请不要保留错误消息a secret您的代码对SQL注入是开放的。至于语法错误,实际检查错误消息将是一个良好的开端。如果它来自数据库,那可能是因为SQL注入漏洞,因为您实际上没有控制要执行的代码!感谢您的帮助。我正在尝试解决代码错误,而不是担心安全性@RiggsFolly@RiggsFolly编辑为准备好的语句$fname,$lname应为$firstname,$lastname,反之亦然