为什么我的PHP/SQL会生成重复的数据库条目?

为什么我的PHP/SQL会生成重复的数据库条目?,php,mysql,sql-server,forms,Php,Mysql,Sql Server,Forms,对于PHP我是个新手,对于SQL我是个绝对的初学者。我只是在学习基础知识,我无法理解为什么每次提交表单时我的代码都会生成一个重复条目,例如 Name: Joe Blogs Email: info@email.co.uk Name: Joe Blogs Email: info@email.co.uk 数据库有一个名为user的表和两列,分别是name和email 我的索引文件如下所示,它有一个简单的名称和电子邮件表单,并在提交时插入数据: <form method="post" actio

对于PHP我是个新手,对于SQL我是个绝对的初学者。我只是在学习基础知识,我无法理解为什么每次提交表单时我的代码都会生成一个重复条目,例如

Name: Joe Blogs Email: info@email.co.uk
Name: Joe Blogs Email: info@email.co.uk
数据库有一个名为user的表和两列,分别是name和email

我的索引文件如下所示,它有一个简单的名称和电子邮件表单,并在提交时插入数据:

<form method="post" action="insert.php">
    <input name="name" type="text">
    <input name="email" type="email">
    <input type="submit" value="Submit Form">
</form>

<?php
$servername = "localhost";
$username = "DB_USER";
$password = "PASSWORD";
$dbname = "DB_NAME";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sqlout = "SELECT name, email FROM user";
$result = $conn->query($sqlout);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<b>Name:</b> " . $row["name"]. " <b>Email:</b> " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();
?>

<form method="post" action="wipe.php">
    <input type="submit" value="Wipe ALL Data">
</form>

提交表单时调用此insert.php文件:

<?php
$servername = "localhost";
$username = "DB_USER";
$password = "PASSWORD";
$dbname = "DB_NAME";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO user ( name, email ) VALUES ( '{$conn->real_escape_string($_POST['name'])}', '{$conn->real_escape_string($_POST['email'])}' )";
$insert = $conn->query($sql);

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

$conn->close();
?>

<a href="index.php">Back</a>

因为您调用了
查询
两次:

$insert = $conn->query($sql);

if ($conn->query($sql) === TRUE) {
你应该重写一下

$insert = $conn->query($sql);

if ($insert === TRUE) {

另外,您应该真正使用。

,因为您调用了两次
query

$insert = $conn->query($sql);

if ($conn->query($sql) === TRUE) {
你应该重写一下

$insert = $conn->query($sql);

if ($insert === TRUE) {

另外,您应该真正使用。

您的代码调用
$conn->query
两次

$insert = $conn->query($sql);// first time 

if ($conn->query($sql) === TRUE) {// second time

您的代码调用
$conn->query
两次

$insert = $conn->query($sql);// first time 

if ($conn->query($sql) === TRUE) {// second time
if($insert==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn->Error; }
如果($insert==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn->Error; }
您需要更改:

$sql = "INSERT INTO user ( name, email ) VALUES ( '{$conn->real_escape_string($_POST['name'])}', '{$conn->real_escape_string($_POST['email'])}' )";
$insert = $conn->query($sql);

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$sql=“插入用户(名称、电子邮件)值({$conn->real_-escape_字符串($\u-POST['name']),{$conn->real_-escape_字符串($\u-POST['email'])”;
$insert=$conn->query($sql);
if($conn->query($sql)==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn->Error; }

$sql=“插入用户(名称、电子邮件)值({$conn->real_-escape_字符串($\u-POST['name']),{$conn->real_-escape_字符串($\u-POST['email'])”;
$status=$conn->query($sql);
如果($status==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn->Error; }
您需要更改:

$sql = "INSERT INTO user ( name, email ) VALUES ( '{$conn->real_escape_string($_POST['name'])}', '{$conn->real_escape_string($_POST['email'])}' )";
$insert = $conn->query($sql);

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$sql=“插入用户(名称、电子邮件)值({$conn->real_-escape_字符串($\u-POST['name']),{$conn->real_-escape_字符串($\u-POST['email'])”;
$insert=$conn->query($sql);
if($conn->query($sql)==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn->Error; }

$sql=“插入用户(名称、电子邮件)值({$conn->real_-escape_字符串($\u-POST['name']),{$conn->real_-escape_字符串($\u-POST['email'])”;
$status=$conn->query($sql);
如果($status==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn->Error; }
我最近在这里看到了一些
称之为两次的
错误。你在遵循什么教程,因为这显然是一个我们应该建议人们避免标记出帮助他人的最佳答案的教程。这不是一个具体的教程。我从w3schools教程开始学习插入数据的基础知识,但接着我添加了一个表单,并在提交时使用该表单插入数据。我错过了双查询调用,因为我对SQL和PHP太陌生了。最近我在这里看到了一些
调用它两次的
错误。你在遵循什么教程,因为这显然是一个我们应该建议人们避免标记出帮助他人的最佳答案的教程。这不是一个具体的教程。我从w3schools教程开始学习插入数据的基础知识,但接着我添加了一个表单,并在提交时使用该表单插入数据。我错过了双重查询调用,因为我对SQL和PHP太陌生了。