我有多个表单字段。我想用代码点火器中的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;
}
}
}