我有一个PHP表单,结构如下:
<input type="text" name="code[]" id="code[]" value="<?php echo $code[4] ?>" />
<input type="text" name="period[]" id="period[]" value="<?php echo $period[4]; ?>" />
我的表单上有五行具有此结构。在提交时,我尝试做的只是在用户将数据输入这些行时插入记录。每行输入都会产生一个单独的记录。如果行为空白,则不应写入任何记录。现在,我们在for()循环中有INSERT语句,并且只要索引字段行为空,它就会插入空白记录。以下是INSERT语句现在的样子:
<?php
for($i=0; $i<=4; $i++) {
$new = $con->prepare("INSERT INTO table (code, period) VALUES(:code, :period)");
$data = array('code'=>$_POST['code'][$i],'period'=>$_POST['period'][$i]);
$new->execute($data);
}
?>
有没有办法完成我想要做的事情?
答案 0 :(得分:1)
两者都不为空(如果一个可以为空,只需将&&
更改为||
):
for($i=0; $i<=4; $i++) {
if(!empty($_POST['code'][$i]) && !empty($_POST['period'][$i]) {
$new = $con->prepare("INSERT INTO table (code, period) VALUES(:code, :period)");
$data = array('code'=>$_POST['code'][$i],'period'=>$_POST['period'][$i]);
$new->execute($data);
}
}
答案 1 :(得分:1)
如果您只想从表单中插入非空行,只需检查是否有填充的内容:
<?php for($i=0; $i<=4; $i++) {
if(isset($_POST['code'][$i]) && $_POST['code'][$i] != '' &&
isset($_POST['period'][$i]) && $_POST['period'][$i] != ''){
$new = $con->prepare("INSERT INTO table (code, period)
VALUES(:code, :period)");
$data = array('code'=>$_POST['code'][$i],'period'=>$_POST['period'][$i]);
$new->execute($data);
}
}
?>
注意,如果发送空白字段,则设置它们(isset返回true)但它们是空字符串