2013-04-14 131 views
0

好了,我有以下SQL查詢:笨活動記錄問題

INSERT INTO film_genre 
    (film_id, genre_id) 
VALUES 
    (1, 1), 
    (1, 2), 
    (1, 3) 

我需要將其轉換成codeigniters活動記錄,這就是我得到了這麼遠,但我只得到一個數據輸入了三次的:

 $movie_genre = array(
      'film_id' => $movies['id'], 
      'genre_id' => 1, 
      'film_id' => $movies['id'], 
      'genre_id' => 2, 
      'film_id' => $movies['id'], 
      'genre_id' => 3, 
      ); 

$this->db->insert('film_genre', $movie_genre); 

回答

3

如果您執行插入之前print_r($movie_genre),你會看到有隻爲film_idgenre_id單個值。這是因爲數組中的每個鍵只能有一個值。您正在爲每個鍵定義三個值,因此您的較早值將被覆蓋。

如果按如下格式化陣列,則可以使用insert_batch方法。查看http://ellislab.com/codeigniter/user-guide/database/active_record.html的完整說明

$records = array(
    array('film_id' => 1, 'genre_id' => 1), 
    array('film_id' => 1, 'genre_id' => 2), 
    array('film_id' => 1, 'genre_id' => 3) 
); 

$this->db->insert_batch('film_genre', $records); 
+0

作爲一種魅力。謝謝 –