批量订单
id | total | date
1 810029 19/11/15
购买
id | itemnum | code | rev | desc | qty | uprice | amount | batchid
1 4 D2252 A Cover 324 2321 752004 1
2 2 D522S S Toolbox 25 2321 58025 1
我已经尝试了一个星期。 我有这两个表格,批量订单和购买 在batchporder表中,我需要插入一行并获取 传递给购买者插入的主要ID。在purchord中,我需要插入多行 所以我用了insert_batch。
控制器
public function post_multiple_table(){
$this->load->model('Common_model', 'com_model', TRUE);
if ($_POST) {
$batchporder_input_data = array();
$batchporder_input_data['total'] = $this->input->post('date');
$batchporder_input_data['total'] = $this->input->post('total');
$batchporder_input_data['ref'] = $this->input->post('ref');
$batchporder_input_data['freight'] = $this->input->post('freight');
$batchporder_input_data['pload'] = $this->input->post('pload');
$batchporder_input_data['pdest'] = $this->input->post('pdest');
$batchporder_input_data['ddate'] = $this->input->post('ddate');
$batchporder_input_data['term'] = $this->input->post('term');
$itemnum = $this->input->post('itemnum');
$code = $this->input->post('code');
$rev = $this->input->post('rev');
$desc = $this->input->post('desc');
$qty = $this->input->post('qty');
$uprice = $this->input->post('uprice');
$amount = $this->input->post('amount');
for ($i=0; $i < sizeof($itemnum); $i++){
$purchord_input_data[$i] = array('itemnum' => $itemnum[$i],
'code' => $code[$i],
'rev' => $rev[$i],
'desc' => $desc[$i],
'qty' => $qty[$i],
'uprice' => $uprice[$i],
'amount' => $amount[$i]
);
}
// echo '<pre>';
// var_dump($purchord_input_data);
// var_dump($batchporder_input_data);
// echo '</pre>';
$checking_insert = $this->com_model->create_multiple_table($batchporder_input_data, $purchord_input_data);
if($checking_insert){
redirect(base_url('admin/payment/all_payments'));
}
else{
redirect(base_url('admin/dashboard'));
}
}
}
模型
//-- order function
public function create_multiple_table($batchporder,$purchord){
$this->db->insert('batchporder',$batchporder);
$batchid = $this->db->insert_id();
$purchord['batchid'] = $batchid;
$this->db->insert_batch('purchord',$purchord);
return $insert_id = $this->db->insert_id();
}
错误1
遇到PHP错误 严重程度:警告
消息:array_keys()期望参数1为数组,给出字符串
文件名:database / DB_query_builder.php
行号:1567
回溯:
文件:C:\ xampp \ htdocs \ admin \ application \ models \ Common_model.php 行:23 函数:insert_batch
文件:C:\ xampp \ htdocs \ admin \ application \ controllers \ admin \ Payment.php 线:93 功能:create_multiple_table
文件:C:\ xampp \ htdocs \ admin \ index.php 线:315 功能:require_once
错误2
错误号:21S01 / 1136
列数与第3行的值数不符
插入purchord
(amount
,code
,desc
,itemnum
,qty
,rev
,{{1 }})值('752004','D2252','cover','4','324','a','2321'),('58025','D522S','toolbox','2' ,'25','s','2321'),()
文件名:C:/xampp/htdocs/admin/system/database/DB_driver.php
行号:691
答案 0 :(得分:1)
这是因为您已将$purchord
作为多个数组传递,并将$purchord['batchid'] = $batchid;
设置为Model
中的单个数组值,所以批次ID应设置如下:
$this->db->insert('batchporder',$batchporder);
$batchid = $this->db->insert_id();
$purchord = array_map(function($arr) use($batchid){
return $arr + ['batchid' => $batchid];
}, $purchord);