2013-08-27 11 views
8

Witam Chcę tylko zapytać, jak mogę wykonać aktualizację wsadowy przy użyciu tablic w CodeIgniter Oto mój przykładowy kod:Jak przeprowadzić aktualizację wsadową za pomocą macierzy Codeigniter?

public function updateItemInfo(){ 

     $id = $this->input->post('idx'); //array of id 
     $desc = $this->input->post('itemdesc'); //array of item name 
     $qty = $this->input->post('qty'); //array or qty 
     $price = $this->input->post('price'); //array of price 
     $code = $this->input->post('codes'); // not array 

     for($x = 0; $x < sizeof($id); $x++){ 

      $total[] = $price[$x] * $qty[$x]; 

      $updateArray = array(
       'item_desc' => $desc[$x], 
       'item_qty' => $qty[$x], 
       'price' => $price[$x], 
       'total' => $total 
      ); 
      $this->db->where('poid',$id[$x]); 
      $this->db->update('po_order_details',$updateArray); //Could not update I don't know why 

     } 

     //echo "<pre>"; 
     //print_r($updateArray); 


     $sumoftotal = array_sum($total); 

     $vat_amt = $sumoftotal/1.12; 
     $vat_input = $vat_amt * 0.12; 
     $total_all = $vat_amt + $vat_input; 

     $updateTotal = array(
      'vatable_input' => $vat_amt, 
      'vatable_amount' => $vat_input, 
      'total_amount_due' => $total_all 
     ); 

     //echo "<pre>"; 
     //print_r($updateTotal); 

     //exit; 

     $this->db->where('order_code',$code); 
     $this->db->update('po_order_total',$updateTotal); //Here also couldn't update 

    } 

To mój kod i nie mogę zorientowaliśmy się gdzie jest mój błąd. Sprawdziłem także moje wartości tablicowe i nie ma błędów w mojej tablicy. Mój problem polega na tym, że nie mogę zaktualizować mojej tabeli za pomocą aktualizacji wsadowej.

+0

Zapis 'echo $ this-> db-> last_query(); die;' po tej linii: '$ this-> db-> Update ('po_order_details', $ updateArray); // Nie można zaktualizować Nie wiem, dlaczego "zobaczyć, co generuje zapytanie. –

Odpowiedz

16

spróbować zobaczyć update_batch opcję tutaj: http://ellislab.com/codeigniter/user-guide/database/active_record.html

CodeIgniter 3.x: http://www.codeigniter.com/user_guide/database/query_builder.html?highlight=where#CI_DB_query_builder::update_batch

Można utworzyć array całym swoim opcji, a następnie wysłać go do funkcji batch_update.

$id = $this->input->post('idx'); //array of id 
$desc = $this->input->post('itemdesc'); //array of item name 
$qty = $this->input->post('qty'); //array or qty 
$price = $this->input->post('price'); //array of price 
$code = $this->input->post('codes'); // not array 

$updateArray = array(); 

for($x = 0; $x < sizeof($id); $x++){ 

    $total[] = $price[$x] * $qty[$x]; 
    $updateArray[] = array(
     'poid'=>$id[$x], 
     'item_desc' => $desc[$x], 
     'item_qty' => $qty[$x], 
     'price' => $price[$x], 
     'total' => $total 
    ); 
}  
$this->db->update_batch('po_order_details',$updateArray, 'poid'); 
+0

ok dzięki, spróbuję tego. – Jerielle

+0

to $ this-> db-> update_batch ('po_order_details', $ updateArray, 'poid'); w mojej pętli for? – Jerielle

+0

Nie, przepraszam, to po for() –

Powiązane problemy