2010-10-25 44 views

回答

1

CodeIgniter的活動記錄類有一個insert_batch()方法,它執行此操作並負責轉義數據。

$data = array(
    array('name' => 'John', 'email' => '[email protected]'), 
    array('name' => 'Sue', 'email' => '[email protected]') 
); 

$this->db->insert_batch('my_table', $data); 

http://codeigniter.com/user_guide/database/active_record.html

+2

,但是這會在表'my_table'中將**新數據作爲批處理插入。我們如何定義** WHERE **子句來批量更新包含特定電子郵件地址的特定行。 – 2011-11-27 12:18:37

3

Mysql可以做多個更新或插入。通常在一個活動記錄模式中,您可以逐個插入,但對於批量更新或插入,您可以執行此操作。

$sql = "INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12) ON DUPLICATE KEY UPDATE Col1=VALUES(Col1),Col2=VALUES(Col2);"; 
$this->db->query($sql); 
+0

要添加到您的評論,你也可以使用查詢綁定與那。這樣CI將爲您自動創建值。即。 「INSERT INTO table(id,Col1,Col2)VALUES(?,?,?),(?,?,?)」$ this-> db-> query($ sql,array(1,1,1,2, 2,3)); – 2010-10-25 19:14:28

1

對於其他老式代碼點火器用戶着想(像我一樣):

您使用的是舊版本? insert_batch和update_batch已經存在了一年多的時間[Sep/2010]。如果您不打算升級,則必須針對每一行運行插入查詢,或者手動構建批量插入語句。

來源:http://codeigniter.com/forums/viewthread/188416/#891199

0

這個問題是關於更新,但接受的答案是插入。

這裏是你怎麼做批量更新:

$data = array(
    array(
     'title' => 'My title' , 
     'name' => 'My Name 2' , 
     'date' => 'My date 2' 
    ), 
    array(
     'title' => 'Another title' , 
     'name' => 'Another Name 2' , 
     'date' => 'Another date 2' 
    ) 
); 

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

這個例子是從CodeIgniter用戶指南:

http://ellislab.com/codeigniter/user-guide/database/active_record.html#update