首页 > 解决方案 > Codeigniter insert_batch 失败奇怪的数组变成了字符串

问题描述

所以现在我传递了一个json,结果如下echo '<pre>' . var_export($data, true) . '</pre>';

    array (
      0 => 
      array (
        'booking_id' => 99,
        'item_type' => '67',
        'sales_item_seq' => '1',
        'package_item_id' => '0',
        'package_item_seq' => '0',
        'package_group' => '0',
        'package_group_rowspan' => '0',
        'package_group_subdata_rowspan' => '0',
        'channel_id' => '380',
        'name_of_channel_programme' => '123',
        'schedule_from' => '0000-00-00 00:00:00',
        'schedule_to' => '0000-00-00 23:59:59',
        'no_of_unit' => '123.00',
        'exposure_inside_per_unit' => '',
        'exposure_duration' => '123',
        'advertising_offier' => '0.00',
        'special_discount' => '0',
        'net' => '0.00',
        't_n_c' => '',
        'remark' => '',
        'status' => '1',
        'create_datetime' => '2018-11-14 17:00:33',
        'update_datetime' => '2018-11-14 17:00:33',
        'channel' => '2',
        'package_name' => '',
        'sale_item_name' => 'hello',
        'cat_id' => '1',
        'aftersales_type' => '',
        'typing_guide' => '',
        'position' => '',
        'platform_des' => 'hello',
        'nature_des' => 'hello',
        'unit_des' => 'Account',
      ),
...
...
...
      9 => 
      array (
        'booking_id' => 99,
        'item_type' => '59',
        'sales_item_seq' => '1',
        'package_item_id' => '0',
        'package_item_seq' => '0',
        'package_group' => '0',
        'package_group_rowspan' => '0',
        'package_group_subdata_rowspan' => '0',
        'channel_id' => '0',
        'name_of_channel_programme' => 'N/A',
        'schedule_from' => '0000-00-00 00:00:00',
        'schedule_to' => '0000-00-00 00:00:00',
        'no_of_unit' => '123.00',
        'exposure_inside_per_unit' => 'N/A',
        'exposure_duration' => 'N/A',
        'advertising_offier' => '1000.00',
        'special_discount' => '100',
        'net' => '0.00',
        't_n_c' => '',
        'remark' => '',
        'status' => '1',
        'create_datetime' => '2018-11-14 17:00:33',
        'update_datetime' => '2018-11-14 17:00:33',
        'channel' => '',
        'package_name' => '',
        'sale_item_name' => 'Service Charge',
        'cat_id' => '7',
        'aftersales_type' => '',
        'typing_guide' => 'N/A',
        'position' => 'N/A',
        'platform_des' => 'N/A',
        'nature_des' => 'Operations',
        'unit_des' => 'Campaign',
      ),
      10 => 
      array (
        'booking_id' => 99,
        'item_type' => '0',
        'sales_item_seq' => '0',
        'package_item_id' => '161',
        'package_item_seq' => '0',
        'package_group' => '1',
        'package_group_rowspan' => '6',
        'package_group_subdata_rowspan' => '1',
        'channel_id' => '39',
        'name_of_channel_programme' => 'hello',
        'schedule_from' => '0000-00-00 00:00:00',
        'schedule_to' => '0000-00-00 23:59:59',
        'no_of_unit' => '1.00',
        'exposure_inside_per_unit' => '0',
        'exposure_duration' => '',
        'advertising_offier' => '180000.00',
        'special_discount' => '100',
        'net' => '0.00',
        't_n_c' => '',
        'remark' => '',
        'status' => '1',
        'create_datetime' => '2018-11-14 17:00:33',
        'update_datetime' => '2018-11-14 17:00:33',
        'channel' => 'Catch',
        'package_name' => 'hello',
        'sale_item_name' => 'hello',
        'cat_id' => '1',
        'aftersales_type' => '',
        'typing_guide' => 'Name of Programme',
        'position' => '',
        'platform_des' => 'hello',
        'nature_des' => 'Live',
        'unit_des' => 'Live Segment',
        'package_id' => '28',
      ),
...
...
...
        'unit_des' => 'Video',
        'package_id' => '28',
      ),
    )

当我在在线查看器上查看它时,它看起来很好。在$this->db->insert_batch('table_name',$data)这里之后是返回的错误,说Array代码中有。

错误号:1064

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的“Array”附近使用的正确语法

我可以在以下内容的末尾找到它(认为这是 的原始输出insert_batch):

    INSERT INTO `table_name` () VALUES 
                ( 
                            '0.00', 
                            '', 
                            100, 
                            '1', 
                            '2', 
                            '380', 
                            '2018-11-14 17:06:46', 
                            '123', 
                            '', 
                            '67', 
                            '123', 
                            'Access Right', 
                            '0.00', 
                            '123.00', 
                            '0', 
                            '0', 
                            '0', 
                            '0', 
                            '0', 
                            '', 
                            'hello', 
                            '', 
                            '', 
                            'hello', 
                            '1', 
                            '0000-00-00 00:00:00', 
                            '0000-00-00 23:59:59', 
                            '0', 
                            '1', 
                            '', 
                            '', 
                            'Account', 
                            '2018-11-14 17:06:46' 
                ) 
                , 
...
...
...
                ( 
                            '1000.00', 
                            '', 
                            100, 
                            '7', 
                            '', 
                            '0', 
                            '2018-11-14 17:06:46', 
                            'N/A', 
                            'N/A', 
                            '59', 
                            'N/A', 
                            'Operations', 
                            '0.00', 
                            '123.00', 
                            '0', 
                            '0', 
                            '0', 
                            '0', 
                            '0', 
                            '', 
                            'N/A', 
                            'N/A', 
                            '', 
                            'Service Charge', 
                            '1', 
                            '0000-00-00 00:00:00', 
                            '0000-00-00 00:00:00', 
                            '100', 
                            '1', 
                            '', 
                            'N/A', 
                            'Campaign', 
                            '2018-11-14 17:06:46' 
                ) 
                , 
                array

我不知道为什么array从 10 日起,所有元素都变成了一个。如果您需要更多信息,请告诉我。谢谢!

标签: codeigniter

解决方案


你的数组索引不匹配。1 - 9 没有 package_id


您可以添加此项以确保所有数组都有 package_id 索引:

array_walk($array, function(&$val){ if (!isset($val['package_id'])) $val['package_id'] = null; });

推荐阅读