2013-08-26 58 views
2

我有Codeigniter的insert_batch模型函數的問題,它似乎重新排列傳遞給它的數組。這裏是我的代碼

控制器(得到所有的POST數據,並安排它到一個數組):

$product_id = $this->input->post('product_id'); 
    $colors = $this->input->post('color_name'); 
    $quantity = $this->input->post('product_quantity'); 
    $payment_option = $this->input->post('payment_option'); 
    $price = $this->input->post('product_price'); 

    $date = date('Y-m-d'); 

    $orders = array(); 
    $other_info = $this->business_mgmt->unique_details(); 

    for($i = 0; $i < count($product_id); $i++) { 
     $color_id = $this->products_model->select_color_id($colors[$i]); 

     $orders[] = array( 
         'order_id' => null, 
         'invoice_number' => $other_info[0], 
         'customer_number' => $other_info[1], 
         'user_id' => 1, 
         'product_id' => $product_id[$i], 
         'color_id' => $color_id, 
         'quantity' => $quantity[$i], 
         'price' => $price[$i], 
         'order_date' => $date 
        ); 
    } 

    $this->business_mgmt->insert_order($orders); 

和這裏的模型:

function insert_order($order_details) { 
     $this->db->insert_batch('exp_mcc_orders', $order_details); 
     print '<pre>'; 
     print_r($order_details); 
     print '</pre>'; 
    } 

和這裏的錯誤消息:

Error Number: 1062 

    Duplicate entry '0' for key 'PRIMARY' 

    INSERT INTO `exp_mcc_orders` 
    (`color_id`, `customer_number`, `invoice_number`,`order_date`, `order_id`, `price`, 
    `product_id`, `quantity`, `user_id`) 
    VALUES ('2','260','20130876617','2013-08-27',NULL,'15','4','4',1) 

    Filename: C:\xampp\htdocs\MiracleCandleCompany\website\system\database\DB_driver.php 

行號:330

高級謝謝。 我的數據庫中列的正確順序是我在數組中使用的順序。 問題是codeigniter以升序重新排列它。

+1

我不知道你正在使用的框架,但列的順序並不重要。問題是你的主鍵不能自動遞增。 – Stijn

+1

請讓您的問題標題在未來更具描述性。 「PHP CodeIgniter」並不能真正幫助人們進行搜索。 –

回答

1

嘗試從陣列$orders中刪除密鑰order_id。您也可以檢查表exp_mcc_orders的設置列order_id - 設置自動增量。

0

剛剛得到它的工作,我的order_id(主鍵)未設置爲auto_increment,我錯誤地將其他列設置爲UNIQUE KEY。