未填充表单值通过php在mysql中创建空行
第一次海报,长期潜伏者:) 我有一个表单设置,它将一个包含七列的表中多行的数据发布到一个php函数中,以将其作为新记录插入数据库中。表单工作得很好,但是,如果表单中有一行未填充,那么php函数将在数据库中创建一个空行。我正试图找出如何避免这种情况。我确信它与表单本身无关,而是与php有关。请看一看。我完全愿意接受建议未填充表单值通过php在mysql中创建空行,php,mysql,forms,field,Php,Mysql,Forms,Field,第一次海报,长期潜伏者:) 我有一个表单设置,它将一个包含七列的表中多行的数据发布到一个php函数中,以将其作为新记录插入数据库中。表单工作得很好,但是,如果表单中有一行未填充,那么php函数将在数据库中创建一个空行。我正试图找出如何避免这种情况。我确信它与表单本身无关,而是与php有关。请看一看。我完全愿意接受建议 <?php require("header.php"); require("dbinc.php"); foreach($_POST['card'] as $row=>$
<?php
require("header.php");
require("dbinc.php");
foreach($_POST['card'] as $row=>$cardcounted)
{
$model=$_POST['model'];
$serial=$_POST['serial'][$row];
$card=$cardcounted;
$status=$_POST['status'];
$date=$_POST['date'];
$location=$_POST['location'];
$query = mysql_query("INSERT INTO receivers (`id`, `model`, `serial`, `card`, `status`, `date`, `location`) VALUES ('null','$model','$serial','$card','$status','$date','$location')");
if(!isset($serial[$row]) || $serial[$row] == '') {
// error message here, redisplay form if desired
} else {
// no errors - process data
}
if (!$query)
{
die('Error: ' . mysql_error());
}
}
echo $row+1 . " record(s) added";
mysql_close()
?>
可能尝试将mysql查询移动到中,否则无论是否存在表单错误,当前都会将值插入数据库。此外,您还需要保护插入数据库的任何内容。现在是SQL注入实地考察;) 第一个选择是使用JavaScript验证来发现无效的表单提交,一些用户可能会禁用JavaScript,因此始终建议进行服务器端验证
所以写一个方法,比如
isValid($postArray) {
foreach($postArray as $key => $value) {
if ($value == "") {
return false;
}
}
return true;
}
如果表单字段名和db列名相似,则可以使用
$sql = "INSERT INTO receivers ";
$keys = "(";
$values = "(";
foreach($postArray as $key => $value) {
if ($value != "") {
$keys += $key;
$values += $value;
}
}
$sql = $sql + $keys +" VALUES "+ $values;
现在是2011年——您的代码非常容易受到SQL注入攻击,甚至一点都不好笑。使用预先准备好的声明和PDO。今天我第四次或第五次提到这个话题:是的,我知道:)它在一个专用的离线网络上供大楼内使用。这是我为个人使用而拼凑起来的东西。是的,在内部工具中,如果你键入你是@Alvaro-压力大的一天,那么崩溃是可以的。哈:P放开它,伙计,放开它!