当我刷新我的页面时,它将空字段发送到数据库。我的代码如下

时间:2018-05-10 04:40:18

标签: php mysql

我创建了用于将数据插入mysql的php表单。数据插入成功,但是当我刷新页面时,它会向mysql db发送空字段。代码如下..

<?php
$con=mysqli_connect("localhost","root","") or die ("connection fail");
mysqli_select_db($con, 'college') or die ("database error");


$n=$_POST["name"];
$c=$_POST["class"];

$sql="insert into studentsinfo(name,class) values('$n','$c')";

mysqli_query($con,$sql);
echo "1 record inserted";
?>

<html>
<head>
</head>


<body>

 <form action="" method="post">

Name: <input type="text" name="name" required="required" title="Enter Name">
Class: <input type="text" name="class" required="required">
<input type="submit" value="insert" name="sub">
</form>



</body>
</html>

请提出任何建议。

3 个答案:

答案 0 :(得分:2)

因为你在同一页面上有你的php和html代码。第一个PHP代码被执行。这就是每次刷新时在数据库中插入空行的原因。

当使用php中的isset()和empty()函数按下提交按钮时,解决方案是使用不同页面进行逻辑或检查条件。 还要在数据库中添加条件,使它们不能为空。

答案 1 :(得分:0)

  

只需要检查表单请求是否为空

<?php
$con=mysqli_connect("localhost","root","") or die ("connection fail");
mysqli_select_db($con, 'college') or die ("database error");

if(isset($_REQUEST['sub']))
{

$n=$_POST["name"];
$c=$_POST["class"];

$sql="insert into studentsinfo(name,class) values('$n','$c')";

mysqli_query($con,$sql);
echo "1 record inserted";
}
?>

<html>
  <head>
  </head>
<body>

 <form action="" method="post">

Name: <input type="text" name="name" required="required" title="Enter Name">
Class: <input type="text" name="class" required="required">
<input type="submit" value="insert" name="sub">
</form>
</body>
</html>

答案 2 :(得分:0)

还使用准备好的语句来阻止SQL注入

    if (isset($_POST['sub'])) {
      $n=$_POST["name"];
      $c=$_POST["class"];

      $sql="insert into studentsinfo(name,class) values('$n','$c')";

      mysqli_query($con,$sql);
      echo "1 record inserted";
    }