Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每次我刷新页面时,PHP表单都会在数据库中添加空行_Php_Sql_Html_Forms_Error Handling - Fatal编程技术网

每次我刷新页面时,PHP表单都会在数据库中添加空行

每次我刷新页面时,PHP表单都会在数据库中添加空行,php,sql,html,forms,error-handling,Php,Sql,Html,Forms,Error Handling,我用PHP创建了一个简单的表单,以便将提交的数据添加到数据库中。连接工作正常,但每次我刷新表单页面时,它都会向数据库中添加一个空行。此外,它还会在第38行显示一条错误消息“未定义索引:C:\xampp\htdocs\projekt\submitform.php中的Fname” 以下是我迄今为止编写的代码: <?php include 'config.php'; ?> <?php $Fname = isset($_POST['Fname'])?$_POST['Fname']:

我用PHP创建了一个简单的表单,以便将提交的数据添加到数据库中。连接工作正常,但每次我刷新表单页面时,它都会向数据库中添加一个空行。此外,它还会在第38行显示一条错误消息“未定义索引:C:\xampp\htdocs\projekt\submitform.php中的Fname”

以下是我迄今为止编写的代码:

<?php include 'config.php'; ?>

<?php

$Fname = isset($_POST['Fname'])?$_POST['Fname']:'';
$Lname = isset($_POST['Lname'])?$_POST['Lname']:'';
$Email = isset($_POST['Email'])?$_POST['Email']:'';
$PhoneNo = isset($_POST['PhoneNo'])?$_POST['PhoneNo']:'';


$query = "INSERT INTO users(Fname,Lname,Email,PhoneNo) VALUES ('$Fname','$Lname','$Email','$PhoneNo')";
$result = mysqli_query($con,$query) or die ("problem inserting data into database");

?>
<p><span class="error">* required field</span></p>

<form action = "" method = "post">
Name: <input type = "text" name = "Fname">
<span class=error>*</span><br>
Surname: <input type="text" name="Lname">
<span class=error>*</span><br>
Email: <input type = "email" name = "Email">
<span class=error>*</span><br>
Phone Number: <input type = "tel" name="PhoneNo"><br>
<input type = "submit" value="submit">
</form>


您需要检查是否存在如下POST变量:

if (isset($_POST['Fname'])) { //here you can check whatever post values you want to check
   $Fname = $_POST['Fname'];
   $Lname = $_POST['Lname'];
   $Email = $_POST['Email'];
   $PhoneNo = $_POST['PhoneNo'];


   $query = "INSERT INTO users(Fname,Lname,Email,PhoneNo) VALUES 
   ('$Fname','$Lname','$Email','$PhoneNo')";
   $result = mysqli_query($con,$query) or die ("problem inserting data into 
   database");
}
因为每次访问页面时,它都会尝试插入记录,但只有当存在post值时,才需要插入记录(表示有人填写表单)


因此,您需要检查刷新是否来自表单提交

您应该“侦听”post请求,然后才插入值

<?php
    if(isset($_POST['submit'])) {
        $Fname = $_POST['Fname'];
        $Lname = $_POST['Lname'];
        $Email = $_POST['Email'];
        $PhoneNo = $_POST['PhoneNo'];


        $query = "INSERT INTO users(Fname,Lname,Email,PhoneNo) VALUES ('$Fname','$Lname','$Email','$PhoneNo')";
        $result = mysqli_query($con,$query) or die ("problem inserting data into database");

    }
?>

防止SQL注入:在执行插入之前,您需要确定用户是否已提交表单。测试
$\u服务器['REQUEST\u METHOD']
。是的,谢谢。添加你建议的行非常有效。很高兴我能帮忙。如果答案是解决方案,请接受:)