PHP / MSSQL;根据数组索引是否存在数据插入记录

时间:2013-12-18 21:59:02

标签: php sql sql-server

我有一个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);
}
?>

有没有办法完成我想要做的事情?

2 个答案:

答案 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)但它们是空字符串