2013-06-30 4 views
0

Oke, так как название подсказывает, что я хочу вставить несколько значений из вложенного массива в одно поле базы данных.Codeigniter - Вставить несколько значений из вложенного массива в базу данных

Чтобы быть ясным, массив ниже будет в одной записи в моей базе данных не в нескольких строках.

Это то, на что похож мой массив.

array(5) { 
    ["stars"]=> 
    array(5) { 
    [0]=> 
    string(10) "Chris Pine" 
    [1]=> 
    string(14) "Zachary Quinto" 
    [2]=> 
    string(11) "Zoe Saldana" 
    [3]=> 
    string(10) "Karl Urban" 
    [4]=> 
    string(10) "Simon Pegg" 
    } 
    ["directors"]=> 
    array(1) { 
    [0]=> 
    string(11) "J.J. Abrams" 
    } 
    ["writers"]=> 
    array(4) { 
    [0]=> 
    string(12) "Roberto Orci" 
    [1]=> 
    string(13) "Alex Kurtzman" 
    [2]=> 
    string(14) "Damon Lindelof" 
    [3]=> 
    string(16) "Gene Roddenberry" 
    } 
    ["genres"]=> 
    array(4) { 
    [0]=> 
    string(6) "Action" 
    [1]=> 
    string(9) "Adventure" 
    [2]=> 
    string(6) "Sci-Fi" 
    [3]=> 
    string(8) "Thriller" 
    } 
    ["movie_data"]=> 
    array(12) { 
    ["imdb_id"]=> 
    string(9) "tt1408101" 
    ["slug"]=> 
    string(23) "star-trek-into-darkness" 
    ["title"]=> 
    string(23) "Star Trek Into Darkness" 
    ["imdb_rating"]=> 
    string(3) "8.2" 
    ["release_date"]=> 
    string(11) "6 June 2013" 
    ["runtime"]=> 
    string(4) "132m" 
    ["mpaa_rating"]=> 
    string(5) "PG-13" 
    ["storyline"]=> 
    string(554) "When the crew of the Enterprise is called back home, they find an unstoppable force of terror from within their own organization has detonated the fleet and everything it stands for, leaving our world in a state of crisis. With a personal score to settle, Captain Kirk leads a manhunt to a war-zone world to capture a one man weapon of mass destruction. As our heroes are propelled into an epic chess game of life and death, love will be challenged, friendships will be torn apart, and sacrifices must be made for the only family Kirk has left: his crew." 
    ["plot"]=> 
    string(202) "After the crew of the Enterprise find an unstoppable force of terror from within their own organization, Captain Kirk leads a manhunt to a war-zone world to capture a one man weapon of mass destruction." 
    ["poster_large"]=> 
    bool(false) 
    ["poster"]=> 
    string(97) "http://ia.media-imdb.com/images/M/[email protected]@._V1._SY500.jpg" 
    ["trailer"]=> 
    string(157) "http://www.youtube.com/v/QAEkuVgt6Aw&feature=youtube_gdata_player?color2=FBE9EC&hd=1&autoplay=1&showsearch=0&version=3&modestbranding=1&fs=1&iv_load_policy=3" 
    } 
} 

У меня есть массив под названием «звезды» внутри общего массива и хочу, чтобы все значения из этого массива «звезд» в одном поле в моей базе данных. Называется, конечно, звезды, для удобного поиска и поиска.

Я посмотрел на функцию codeigniters batch_insert, но он не хочет, чтобы мне это нужно.

Я надеюсь, что кто-то может по крайней мере указать мне в правильном направлении, как действовать.

Благодарим вас в Advance.


ответ

0

У MySQL нет типа поля массива. Использование MySQL вам потребуется две таблицы в следующем стиле:

films 
id | FilmName 
1 Star Trek 

actors 
id | FilmId | Name 
1 1  Chris Pine 
2 1  Zachary Quinto 
3 1  Zoe Saldana 

Вы могли бы принять это еще с таблицей связи между ними, так что у вас есть только одна строка для каждого участника, независимо от того, сколько фильмов они были в.

В CI вы можете вставить каждый «актерский» ряд после того, как вы вставили фильм. Если вы используете что-то вроде InnoDB для таблиц, вы также можете сделать это с помощью транзакции (http://ellislab.com/codeigniter/user-guide/database/transactions.html).

Если это невозможно (почему бы и нет?), Вы должны рассмотреть базу данных на основе NoSQL, такую ​​как MongoDB.

+0

Благодарим вас за красиво проиллюстрированный ответ. Мне нужно переосмыслить, как моя база данных будет структурирована. Теперь у меня есть цикл foreach, который сжимает всех актеров фильма в строке. Но я думаю, что ваша идея может быть лучшим решением. ;) – user1928075

0

Прежде чем вы должны прочитать Insert array into MySQL database with PHP.

Совет: Чтобы сделать то, что вы хотите, найдите MongoDB.

+0

У меня нет проблем с вставкой массива в мою базу данных, это прекрасно работает, у меня только проблемы с вложенными массивами. Но спасибо вам. – user1928075

Смежные вопросы