基本上,我有一个有5行的表单。插入多个记录并检查一行是否有记录
像这样:
<form action="process.php" method="post">
<p><label>Name</label>
<input type="text" name="name[]" />
<label>email</label>
<input type="text" name="email[]" />
</p>
<p><label>Name</label>
<input type="text" name="name[]" />
<label>email</label>
<input type="text" name="email[]" />
</p>
<p><label>Name</label>
<input type="text" name="name[]" />
<label>email</label>
<input type="text" name="email[]" />
</p>
<p><label>Name</label>
<input type="text" name="name[]" />
<label>email</label>
<input type="text" name="email[]" />
</p>
<p><label>Name</label>
<input type="text" name="name[]" />
<label>email</label>
<input type="text" name="email[]" />
</p>
<input name="Submit" type="submit" />
</form>
这是我process.php
<?php
// connect to the database
include('db.php');
$name = count($_POST['name']);
$email = count($_POST['email']);
if ($name > 0 && $name == $email) {
$insertArr = array();
for ($i=0; $i<$name; $i++) {
$insertArr[] = "('" . $_POST['name'][$i] . "', '" . $_POST['email'][$i] . "')";
}
}
$sql = "INSERT INTO comments(name, email) VALUES " . implode(',', $insertArr) ;
$qry = $conn->prepare ($sql);
$qry->execute($insertArr);
echo("<pre>\n");
print_r($_POST);
echo("</pre>\n");
?>
但是,如果用户刚刚输入4记录的第5行没有价值,但他们被保存到数据库。我想检查用户是否有5个输入,如果不是,那么我必须忽略空值并只保存有输入的字段。有谁知道如何做到这一点?我很乐意感谢你的帮助。谢谢。
In for在添加到$ insertArr []数组之前,循环检查$ _POST ['name'] [$ i]为null。 – prabu
您应该查看准备好的语句。看起来你正在使用PDO?然后,您可以绑定值并在循环中执行它们,而不是构建插入字符串,这非常容易受到SQL注入的影响。 – NewInTheBusiness