2013-01-08 9 views
5

Rozglądałem się, ale nie znalazłem jeszcze odpowiedzi. Prosimy o pomoc, jeśli znasz odpowiedź.Zaktualizuj wiele wierszy w Codeigniter

Jak aktualizować wiele wierszy w CI?

W moim MySQL:

mam kolumn nazwy:

ID, Settings Name, Settings Value (Settings Name is Unique) 

Mam Dane FF:

ID = 1, Settings Name = "Hello" , Settings Value = "True" 
ID = 2, Settings Name = "World", Settings Value = "Good" 

i więcej ...

Mam też formularz, który dostaje Settings Value, ale nie jestem pewien, jak zaktualizować go na DB. Jak zaktualizować True dla Hello jako Settings Name i zaktualizować dla .

Słyszałem o insert_batch(), ale czy jest tam update_batch()?

+0

myślę, że może to pomóc http://stackoverflow.com/questions/7759514/update-multiple-rows -with-different-values-in-a-single-query-mysql –

Odpowiedz

13

Czy używasz rekordu aktywnego?

Tak istnieje partia zmiana: $this->db->update_batch();

$data = array(
array(
    'ID' => 1 , 
    'Settings Name' => 'Hello' , 
    'Settings Value' => 'True' 
), 
array(
    'ID' => '2' , 
    'Settings Name' => 'World' , 
    'Settings Value' => 'Good' 
) 
);  

$this->db->update_batch('mytable', $data, 'where_key'); 

Z dokumentacji:

Pierwszy parametr będzie zawierać nazwę tabeli, druga to tablica asocjacyjna z wartościami, trzeci parametr jest gdzie klucz.

+0

Dzięki za to !!! Wpatrywałem się w tę samą dokumentację od CI, ale mam tylko żarówkę, kiedy odpowiadasz na to pytanie Q. hehe głupcze mnie .. Jeszcze raz dziękuję! – jsd

+0

Mam następującą odpowiedź: Jak pobrać z DB podane wartości? czy jest to normalna set_value()? Dzięki! – jsd

+0

@JeffSimonsDecena, co masz na myśli odzyskać z DB z normal set_value()? Wartość set_value() w dokumentacji CI służy do ponownego wypełnienia formularza. Pobieranie danych z bazy danych można znaleźć tutaj [Wybór danych] (http://ellislab.com/codeigniter/user-guide/database/active_record.html#select) –

3

Rzeczywiście istnieje update_batch()method available in CodeIgniter already.

można go używać swój przykład tak:

$data = array(
    array(
     'ID' => 1, 
     'Settings Name' => 'Hello', 
     'Settings Value' => 'True' 
    ), 
    array(
     'ID' => 2, 
     'Settings Name' => 'World', 
     'Settings Value' => 'Good' 
    ) 
); 
$this->db->update_batch('tableName', $data, 'id'); 

Więc co masz jest tablicą tablic, dzieci zasadzie przechowywania danych dla każdego wiersza w bazie danych. Pierwszy parametr dla update_batch() to nazwa tabeli bazy danych, druga to zmienna $data, a trzecia kolumna, której chcesz użyć w klauzuli WHEN.

-1

Oto prosty kod php do wykonywania tych operacji.

<?php 
function basic_update($uwi='') { 
$this->load->database(); 
$data = array(
'ID' => 1, 
'Settings Name' => 'Hello', 
'Settings Value' => 'True' 
); 
$this->db->where('ID', '1'); 
$this->db->update('<table name>', $data); 
$data1 = array(
    'ID' => 2, 
    'Settings Name' => 'World', 
    'Settings Value' => 'Good' 
    ); 
    $this->db->where('ID', '2'); 
    $this->db->update('<table name>', $data1); 
} 

W $ tym-> db-> gdzie ("ID", "1"); ID to pole tabeli, a 1 to wartość. W tablicy pierwszy parametr będzie zawierać nazwę tabeli, drugi parametr jest tablicą asocjacyjną wartości

+0

To zły sposób na aktualizowanie wielu wierszy, tak jak Ty uruchomienie 2 lub więcej zapytań, w których można uruchomić tylko 1. –