2013-01-08 55 views
5

我一直在環顧四周,但我還沒有找到答案。如果你知道答案,請幫助。在Codeigniter中更新多行

如何更新CI中的多行?

在我的MySQL:

我有列名:

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

我有FF數據:

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

更多...

我也有一個表格獲得Settings Value,但我不確定如何在數據庫上進行更新。如何更新TrueHelloSettings Name並更新GoodWorld

我聽說過insert_batch(),但是有沒有update_batch()

+0

我覺得一個關聯數組,它可以幫助你 http://stackoverflow.com/questions/7759514/update-multiple-rows -with-different-values-in-a-single-query-mysql –

回答

13

您使用的是有效記錄嗎?

是有更新批次:$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'); 

從文檔:

第一個參數將包含表名,第二個是值的關聯數組,第三個參數是哪裏的關鍵。

+0

感謝!我一直在盯着來自CI的同樣的文件,但當你回答這個問題時,我只有燈泡。嘿嘿愚蠢的我..再次感謝! – jsd

+0

我有一個後續問題:如何從數據庫檢索發佈的值?這是正常的set_value()?謝謝! – jsd

+0

@JeffSimonsDecena,你是什麼意思從正常的set_value()檢索數據庫? CI文檔中的set_value()用於重新填充表單。從數據庫檢索數據可以在這裏找到[選擇數據](http://ellislab.com/codeigniter/user-guide/database/active_record.html#select) –

3

的確有一個update_batch()method available in CodeIgniter already

你可以使用它你的榜樣,像這樣:

$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'); 

所以,你所擁有的是一個數組的數組,孩子們基本上保持數據在數據庫中的每一行。 update_batch()的第一個參數是數據庫表的名稱,第二個參數是$data變量,第三個參數是您想要在WHEN子句中使用的列。

-1

這裏是一個簡單的PHP代碼來執行此操作。

<?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); 
} 

In $ this-> db-> where('ID','1'); ID是您的表格字段,1是值。 在數組第一個參數包含表名,第二個參數是值

+0

這是一個很糟糕的做多行更新的方式,因爲你是運行2個或更多查詢,您只能運行1個查詢。 –