开发者社区> 问答> 正文

如何插入两个表;一个表将插入1行,另一表将插入多行,两个表的一列具有相同的值

批量订购

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表中的batchporder和purchord ,我需要插入一行并获取主ID才能传递给purchord插入。在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行的值数不匹配

INSERT INTO purchord(amount,code,desc,itemnum,qty,rev,uprice)VALUES( '752004', 'D2252', '盖', '4', '324', '一个', '2321'),( '58025', 'D522S', '工具箱','2','25','s','2321'),()

文件名:C:/xampp/htdocs/admin/system/database/DB_driver.php

行号:691

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-15 14:03:02 588 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);

    2019-11-15 14:03:12
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载