php - 每次刷新页面时,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>
解决方案
您应该“听取”发布请求,然后才插入这些值。
<?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 是一个巨大的安全风险!您至少应该在存储输入数据时使用mysqli
and 。mysqli_real_escape_string($Fname)
更安全的是使用PDO 和准备好的语句。
推荐阅读
- php - 无法理解以下代码中的 PHP 关联数组代码差异
- java - 当应用程序在本地 Kafka 实例上运行时,主题分区显示为空
- python-chess - 如何推广典当?
- c - 如何处理单链表的根
- kotlin - 防止 IntelliJ Kotlin runCatching 自动完成为 kotlin.runCatching
- php - 返回多个数字之一的最大值并验证参数是否为数字的函数
- reactjs - 带有身份验证会话的 React 应用程序中的 Redux 与 HOC
- solr - 启用 HTTPS 后查询 solr 云时出错
- reactjs - string can't be used to index type '{ firstName: { inputWarning: string; inputRegex: RegExp; };
- python - 在数组 Numpy Python 之间格式化值