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 );
4

1 回答 1

3

如果您在插入之前执行 a ,您将看到andprint_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);
于 2013-04-14T23:18:38.313 回答