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')";
这似乎是正确的,但我不知何故错过了它。
演示中的表单-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')";