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