如何在Codeigniter 3中插入带有“不一致?”数组关联的_batch()

zsohkypk  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(73)

我在谷歌上搜索,但结果与我的问题不符。
我有一个数组

$data1 = array(
            'DRAWING_NO'=>123,
            'NO_PLANNING'=>321,

        );
$data2 = array(
            'DRAWING_NO'=>456,
            'NO_PLANNING'=>654,
            'ON_CREATE'=>date('Y-m-d H:i:s')
        );

然后我会执行insert_batch()

$this->db->insert_batch('tb_drawing_lvl',array($data1,$data2));

但是我得到了错误

是的,我知道,因为在$data1中我没有给予'ON_CREATE'键。但是我想将它们插入到我的表中,结果是这样的

如何使用insert_batch实现这一点?

z31licg0

z31licg01#

最后我采用了下面的逻辑。
实际上,我所做的是创建一个单独的数组,并通过现有数组的循环,检查是否存在必要的键和值,如果不存在,我已经添加了这些键,并与所有需要的键执行批量插入!

$data = array(
            array(
                'DRAWING_NO' => 121 ,
                'NO_PLANNING' => 123
            ),
            array(
                'DRAWING_NO'=>456,
                'NO_PLANNING'=>654,
                'ON_CREATE'=>date('Y-m-d H:i:s')
            )
        );

        $row_arr = array();

        foreach($data as $row){

            $temp = array(
                'DRAWING_NO' => isset($row['DRAWING_NO']) ? $row['DRAWING_NO'] : NULL,
                'NO_PLANNING' => isset($row['NO_PLANNING']) ? $row['NO_PLANNING'] : NULL,
                'ON_CREATE' => isset($row['ON_CREATE']) ? $row['ON_CREATE'] : date('Y-m-d H:i:s')
            );

            array_push($row_arr,$temp);
        }

        $this->db->insert_batch('test',$row_arr);

相关问题