空字段显示代码点火器中插入批次的错误


empty field show error for insert batch in codeigniter

我有多个表单字段。我想用代码点火器中的insert_batch在数据库中插入超过25行。像

 public function purchase(){
  $data = array(
  array(
         'date'=> $this->input->post('date'),
         'vendor_name'=>$this->input->post('vendor_name'),
         'model'=>$this->input->post('model'),
         'price' =>$this->input->post('price'), 
         'purchase_quantity'=>$this->input->post('quantity'),
         'amount'  =>$this->input->post('price')*$this->input->post('quantity'),
         'invoice_no'=>$this->input->post('invoice')
         ),
          array(
         'date'=> $this->input->post('date'),
         'vendor_name'=>$this->input->post('vendor_name2'),
         'model'=>$this->input->post('model2'),
         'price' =>$this->input->post('price2'), 
         'purchase_quantity'=>$this->input->post('quantity2'),
         'amount'  =>$this->input->post('price2')*$this->input->post('quantity2'),
         'invoice_no'=>$this->input->post('invoice')
         ),
          array(
         'date'=> $this->input->post('date'),
         'vendor_name'=>$this->input->post('vendor_name3'),
         'model'=>$this->input->post('model3'),
         'price' =>$this->input->post('price3'), 
         'purchase_quantity'=>$this->input->post('quantity3'),
         'amount'  =>$this->input->post('price3')*$this->input->post('quantity3'),
         'invoice_no'=>$this->input->post('invoice')
         )
         );
  $insert = $this->db->insert_batch('purchase',$data);
  return $insert; 
  }

但如果我填写了两个字段并提交,它会显示类似的错误

第3行"purchase_quantity"列的整数值"不正确

INSERT INTO `purchase` (`amount`, `date`, `invoice_no`, `model`, `price`, 
`purchase_quantity`, `vendor_name`) VALUES 
(4995,'18-09-2014','vvvvv','m6','999','5','mizan'), 
(5000,'18-09-2014','vvvvv','ab12','1000','5','abcde'), (0,'18-09-2014','vvvvv',0,0,'','')

文件名:C:''examplep''htdocs''final''sys''database''DB_driver.php

线路编号:330

请帮忙。

在整数值之前使用intval。。

intval($this->input->post('quantity2'))

https://ellislab.com/forums/viewthread/238144/

如果使用变量插入批处理数据会更好。

$purchase_quantity=empty($this->input->post('quantity3'))==true?0:$this->input->post('quantity3');

并在数组中使用此$purchase_quantity进行插入。

上面的代码将检查quantitiy3是否有空值(即0、null或false),它将替换为0(整数),并保存在变量中,您可以在数组中使用该变量插入

如果表单元素像这样为空,则可以将值设置为null或默认值。。

'date'=>($this->input->post('date'))?$this->input->post('date'):null;

'date'=>($this->input->post('date'))?$this->input->post('date'):date('Y-m-d');

如果你想完全忽略插入,也可以这样做:

$data = array();
for($i=1;$i<=25;$i++)
{
    if($i>1)
    {
      if($this->input->post('vendor_name'.$i) && $this->input->post('model'.$i) && $this->input->post('price'.$i) && $this->input->post('quantity'.$i))
      {
        $record = array(
         'date'=> $this->input->post('date'),
         'vendor_name'=>$this->input->post('vendor_name'.$i),
         'model'=>$this->input->post('model'.$i),
         'price' =>$this->input->post('price'.$i), 
         'purchase_quantity'=>$this->input->post('quantity'.$i),
         'amount'  =>$this->input->post('price'.$i)*$this->input->post('quantity'.$i),
         'invoice_no'=>$this->input->post('invoice')
        );
        $data[]=$record;
      }
    }
    else{
       if($this->input->post('vendor_name') && $this->input->post('model') && $this->input->post('price') && $this->input->post('quantity'))
      {
         $record = array(
         'date'=> $this->input->post('date'),
         'vendor_name'=>$this->input->post('vendor_name'),
         'model'=>$this->input->post('model'),
         'price' =>$this->input->post('price'), 
         'purchase_quantity'=>$this->input->post('quantity'),
         'amount'  =>$this->input->post('price')*$this->input->post('quantity'),
         'invoice_no'=>$this->input->post('invoice')
        );
        $data[]=$record;
      }
    }
}