每次我刷新页面时,PHP表单都会在数据库中添加空行
我用PHP创建了一个简单的表单,以便将提交的数据添加到数据库中。连接工作正常,但每次我刷新表单页面时,它都会向数据库中添加一个空行。此外,它还会在第38行显示一条错误消息“未定义索引:C:\xampp\htdocs\projekt\submitform.php中的Fname” 以下是我迄今为止编写的代码:每次我刷新页面时,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 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']
。是的,谢谢。添加你建议的行非常有效。很高兴我能帮忙。如果答案是解决方案,请接受:)