php在提交表单之前将数据插入数据库中的值为空?

Posted

技术标签:

【中文标题】php在提交表单之前将数据插入数据库中的值为空?【英文标题】:Php inserts data into database with empty values before form is submitted? 【发布时间】:2014-03-25 11:31:27 【问题描述】:

我正在尝试使用此代码from this site,它在页面最初加载时将空字段插入数据库,当填写并提交表单字段时,将另一批数据插入数据库(mysql )。如何避免这种行为?

<html>
<body>

<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname">
Lastname: <input type="text" name="lastname">
Age: <input type="text" name="age">
<input type="submit">
</form>

</body>
</html> 
<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  

$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

if (!mysqli_query($con,$sql))
  
  die('Error: ' . mysqli_error($con));
  
echo "1 record added";

mysqli_close($con);
?> 

【问题讨论】:

页面加载时,代码运行。即使为空,代码也会插入值 - 解决方案,检查插入前提交的表单 【参考方案1】:
<html>
<body>

<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname">
Lastname: <input type="text" name="lastname">
Age: <input type="text" name="age">
<input type="submit" name="submit" value="submit" />
</form>

</body>
</html> 
<?php
if($_POST['submit'])
  $con=mysqli_connect("example.com","peter","abc123","my_db");
  // Check connection
  if (mysqli_connect_errno())
    
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    

    $sql="INSERT INTO Persons (FirstName, LastName, Age)
      VALUES
      ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

    if (!mysqli_query($con,$sql))
    
      die('Error: ' . mysqli_error($con));
    
      echo "1 record added";

  mysqli_close($con);

?> 

你必须检查($_POST['submit']) 变量是否设置了值。

您还需要在输入 type="submit" html 元素中添加一些值和名称

<input type="submit" name="submit" value="Submit!" />

【讨论】:

也可能不建议小学生将$_POST数据直接输入数据库#justsaying【参考方案2】:

您需要在插入之前检查提交按钮的isset(),否则它会在每次加载时插入一个空行,所以添加它

</body>
</html> 
<?php

if(isset($_POST['submit']))

     $con=mysqli_connect("example.com","peter","abc123","my_db");

     //all your code here

请注意,您的提交按钮缺少名称,因此请将其更改为

<input type"submit" name="submit">

【讨论】:

【参考方案3】:

将您的插入代码放在一个 if 语句中,例如:

如果 (isset($_post)) 代码在这里

【讨论】:

以上是关于php在提交表单之前将数据插入数据库中的值为空?的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDO 和 PHP 将表单中的数据插入 MySQL 数据库

初学php表单数据的小问题

php一个表单提交多个页面,怎样获取按钮提交过来的值

php表单的提交按钮是一个图片,当点击提交按钮要将表单内容插入数据库应该怎么写啊

使用 Bootstrap PHP 表单向导插入 sql

将html表单中的数据插入sql数据库(html,php,sql)时未保存输入的值