使用PHP存储表单时在表中形成的重复行

使用PHP存储表单时在表中形成的重复行,php,mysql,forms,Php,Mysql,Forms,我正在制作一个网站来显示个人的家庭关系…我使用PHP来存储表单中的数据。我使用访问代码对不同的关系进行分类,如果是个人的话。i、 e..101人X的关系。 我需要一些帮助来解释为什么一个条目被两次输入数据库。(PHP新手,第一次在这里寻求帮助) 提前谢谢你! 表单代码(在ct.php中): 访问代码: 在家庭中的地位: 祖父 祖母 父亲 母亲 兄弟 姐妹 叔叔 阿姨 侄子 侄女 你自己 名称: 出生日期: 我使用以下PHP代码存储表单中的数据: <?php include '

我正在制作一个网站来显示个人的家庭关系…我使用PHP来存储表单中的数据。我使用访问代码对不同的关系进行分类,如果是个人的话。i、 e..101人X的关系。 我需要一些帮助来解释为什么一个条目被两次输入数据库。(PHP新手,第一次在这里寻求帮助) 提前谢谢你! 表单代码(在ct.php中):


访问代码:

在家庭中的地位: 祖父 祖母 父亲 母亲 兄弟 姐妹 叔叔 阿姨 侄子 侄女 你自己

名称:

出生日期:

我使用以下PHP代码存储表单中的数据:

    <?php
include 'ct.php';
$temp="temp";
$conn= mysqli_connect ('localhost','root','','familytree');
if (!$conn)
{
die ('Could not connect:' . mysql_error());
}
if (isset($_POST['code_entered']))
{
    $acc= $_POST['code_entered'];
}if (isset($_POST['fpos_entered']))
{
    $fpos= $_POST['fpos_entered'];
}if (isset($_POST['name_entered']))
{
    $n= $_POST['name_entered'];
}if (isset($_POST['dob_entered']))
{
    $db= $_POST['dob_entered'];
}
$sql ="insert into temp values ('$acc', '$n','$fpos','$db')";
$result = mysqli_query($conn,$sql);
if ($conn->query($sql) === TRUE) {
    echo "<p>New record created successfully</p>.";
    }
    else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>

您可以更改此文件的代码

$result = mysqli_query($conn,$sql);
if ($conn->query($sql) === TRUE) {
    echo "<p>New record created successfully</p>.";
    }
    else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$result=mysqli\u查询($conn,$sql);
if($conn->query($sql)==TRUE){
echo“已成功创建新记录”

; } 否则{ echo“Error:”.$sql.“
”$conn->Error; }
进入这个

$result = mysqli_query($conn,$sql);
if ($result === TRUE) {
    echo "<p>New record created successfully</p>.";
    }
    else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$result=mysqli\u查询($conn,$sql);
如果($result==TRUE){
echo“已成功创建新记录”

; } 否则{ echo“Error:”.$sql.“
”$conn->Error; }

此外,您还必须小心sql注入,因此我认为您必须使用

,您应该使用绑定参数,而不是直接将_POST中的值插入insert语句到DB中。。。否则,您肯定会有SQL注入。
mysqli\u query($conn,$SQL)
插入第一条记录,
$conn->query($SQL)
插入相同的第二条记录。明白了吗?谢谢你的指导。感谢你们,我看到了我程序中的错误。这是一个印刷错误。正如@u_mulder所指出的,你询问了两次。投票以这样的方式结束。“我建议你使用PDO而不是mysqli。”-原因是什么?我个人觉得PDO比mysqli更容易。我认为这是因为PDO提供的api更像是面向对象的。不管怎么说,现在这两个都是可行的选择。哪一个取决于你。我发现这个比较链接非常有趣:另一个有趣的链接:这个IMHO没有回答这个问题;这只是重写。
$result = mysqli_query($conn,$sql);
if ($result === TRUE) {
    echo "<p>New record created successfully</p>.";
    }
    else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
<?php
declare(strict_types=1);

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "familytree";

$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

try {
    $stmt = $conn->prepare("
INSERT INTO `temp` (code, fpos, name, dob) 
VALUES (:code, :fpos, :name, :dob)");

    $stmt->bindParam(':code', $_POST['code_entered'] ?? null);
    $stmt->bindParam(':fpos', $_POST['fpos_entered'] ?? null);
    $stmt->bindParam(':name', $_POST['name_entered'] ?? null);
    $stmt->bindParam(':dob', $_POST['dob_entered'] ?? null);
    $stmt->execute();

    echo "<p>New record created successfully</p>.";
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}