【问题标题】:Codeigniter reconstruct query output array to insert in another tableCodeigniter 重建查询输出数组以插入另一个表
【发布时间】:2016-07-23 14:31:54
【问题描述】:

在完成临时(costing_detail_temp) 表中的数据处理后,
我必须将该数据插入到具有一些附加列值的永久(costing_detail) 表中的一行中。 costing_detail 表具有与 costing_detail_temp 相同的列以及一些附加列。所以,我必须做到以下几点:

  1. 对 costing_detail_temp 运行查询并选择一行,
  2. 在返回的数组中添加一些键值对,
  3. 插入 costing_detail。 所以,这是我的模型的代码:

    函数 add_new_detail($Temp_id) { $loggedUserID = $this->session->userdata('id_user'); $add_on = date('Y-m-d H:i:s'); $add_date = date('Y-m-d'); $ip = $this->input->ip_address(); $qry = "SELECT * FROM costing_detail_temp WHERE Temp_id = ".$Temp_id; $query = $this->db->query($qry); $data_item_list = $query->result(); $additional_data = 数组( 'add_by' =>$loggedUserID, 'add_on' =>$add_on, 'add_date' =>$add_date, 'operation_ip' =>$ip ); //将数组$additional_data推入$data_item_list array_push($data_item_list, $additional_data); //********** //插入包含组合数组的行 $this->db->insert('costing_detail', $data_item_list); 返回 $data_item_list; }

这将返回以下数组:

大批 ( [0] => 标准类对象 ( [Temp_id] => 20160300101 [报价编号] => 201603001 [item_name] => BYA:3x 3 re (3-w) 红色 [item_id] => 0 [Item_Specification] => core=3,wire=3,绝缘=pvc,dia=3mm,color=red [Required_Quantity] => 3.00 ) [1] => 数组 ( [add_by] => 12 [add_on] => 2016-04-04 12:15:47 [添加日期] => 2016-04-04 [操作IP] => 127.0.0.1 ) )

但是,我需要这样的东西:

大批 ( [0] => 标准类对象 ( [Temp_id] => 20160300101 [报价编号] => 201603001 [item_name] => BYA:3x 3 re (3-w) 红色 [item_id] => 0 [Item_Specification] => core=3,wire=3,绝缘=pvc,dia=3mm,color=red [Required_Quantity] => 3.00 [add_by] => 12 [add_on] => 2016-04-04 12:15:47 [添加日期] => 2016-04-04 [操作IP] => 127.0.0.1 ) )

我怎样才能做到这一点?

【问题讨论】:

    标签: php mysql arrays codeigniter object


    【解决方案1】:

    试试这个代码。

    function add_new_detail($Temp_id)
    {
        $loggedUserID = $this->session->userdata('id_user');
        $added_on = date('Y-m-d H:i:s');
        $added_date = date('Y-m-d');    
        $ip = $this->input->ip_address();
        $qry = "SELECT * FROM costing_detail_temp WHERE Temp_id = ".$Temp_id;
        $query = $this->db->query($qry);
        $data_item_list = $query->result_array(); // result as an array
        // add additional data
        foreach ($data_item_list as $key => $item) 
        {
            $data_item_list[$key]['added_by'] = $loggedUserID;
            $data_item_list[$key]['added_on'] = $added_on;
            $data_item_list[$key]['added_date'] = $added_date;
            $data_item_list[$key]['operation_ip'] = $operation_ip;
        }
        //insert a row with the combined array
        $this->db->insert('costing_detail', $data_item_list);
        return $data_item_list;
    }
    

    【讨论】:

    • 谢谢,这也有效:),这会将新元素放入数组而不是创建新数组(在选定的答案中)
    【解决方案2】:

    尝试使用foreach 获取您想要的结果并将其插入到数组中,如下例所示:

    function add_new_detail($Temp_id)
            {
                $loggedUserID = $this->session->userdata('id_user');
                $added_on = date('Y-m-d H:i:s');
                $added_date = date('Y-m-d');    
                $ip = $this->input->ip_address();
                $qry = "SELECT * FROM costing_detail_temp WHERE Temp_id = ".$Temp_id;
                $query = $this->db->query($qry);
    
                $data_itemlist = array();
    
                foreach ($query->result() as $dat) {
                    foreach ($dat as $key => $value) {
                        $data_itemlist[$key] = $value;
                    }
                    $data_itemlist['added_by'] = $loggedUserID;
                    $data_itemlist['added_on'] = $added_on;
                    $data_itemlist['added_date'] = $added_date;
                    $data_itemlist['operation_ip'] = $ip;
                }
    
                $this->db->insert('costing_detail', $data_itemlist);
                return $data_itemlist;
            }
    

    输出

    Array(
    [Temp_id] => 20160300101
                [Quotation_id] => 201603001
                [item_name] => BYA :3x 3 re (3-w) Red
                [item_id] => 0
                [Item_Specification] => core=3, wire=3, insulation=pvc, dia=3mm, color=red
                [Required_Quantity] => 3.00
                [added_by] => 12
                [added_on] => 2016-04-04 12:15:47
                [added_date] => 2016-04-04
                [operation_ip] => 127.0.0.1
    )
    

    【讨论】:

    • 返回 $data_item_list;未定义,请将其重命名为 $data_itemlist
    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    相关资源
    最近更新 更多