首页 > 解决方案 > 每次刷新页面时,PHP表单都会在数据库中添加空白行

问题描述

我在 PHP 中创建了一个简单的表单,因此我可以将提交的数据添加到数据库中。连接工作正常,但每次我刷新表单页面时,它都会在数据库中添加一个空白行。此外,它还显示一条错误消息“ Undefined index: Fname in C:\xampp\htdocs\projekt\submitform.php on line 38

这是我到目前为止编写的代码:

<?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>

标签: phpsqlhtmlformserror-handling

解决方案


您应该“听取”发布请求,然后才插入这些值。

<?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 是一个巨大的安全风险!您至少应该在存储输入数据时使用mysqliand 。mysqli_real_escape_string($Fname)

更安全的是使用PDO 和准备好的语句


推荐阅读