mysql 和 php 形式和连接

mysql and php form and connection

这似乎是正确的,但我不知何故错过了它。

演示中的表单-form.php 文件

<form action="test.php" method="post" />   
<p>Name: <input type="text" name="name" /></p>
<p>Email: <input type="text" name="email" /></p>
<input type="submit" value="Submit" />
</form>

test.php 文件中的代码

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "forms1";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO per_Info (name, email)
VALUES ('Test', 'test@example.com')";

if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

问题:它将 'Test'、'test@example.com' 插入数据库(在 "name" 和 "email" 下),而不是我实际在表单中键入的任何名称,在换句话说,如果我在表单的名称字段中键入 "John" 和“John@test.com,它只会插入 'Test'、'test@example.com' 而不是 "John",等等

您 post 具有表单的数据,并且可以使用 $_POST['inputname']

检索该数据
<?php

    $stmt = $conn->prepare("
       INSERT INTO per_Info
        (name, email) 
       VALUES 
        (?, ?)
    ");

    $stmt->bind_param("ss", $_POST['name'], $_POST['email']);

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

?>

这不是你想要的吗?无论用户在表单中键入什么,都将 "Test" 作为名称插入数据库并在数据库中插入 "test@example.com"?因为这就是这一行所说的:

$sql = "INSERT INTO per_Info (name, email)
VALUES ('Test', 'test@example.com')";

抱歉讽刺,我花了 5 分钟才弄清楚哪里出了问题,当我弄清楚的时候我觉得自己很愚蠢 :p。所以你需要做的是清理你的 $_POST['name']$_POST['email'] (more info on sanitizing post data)。假设您已经这样做了,并且您有两个非常干净的变量,分别称为 $name$email。你想要做的是:

$sql = "INSERT INTO per_Info (name, email)
VALUES ('$name', '$email')";