我创建了用于将数据插入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>
请提出任何建议。
答案 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";
}