2013-07-13 1 views
0

Что у меня есть:Положив массив, содержащий несколько массивов в тузд таблицы

массив с 30 клавишами, некоторые клавиши содержат только одно значение, в то время как другие содержат несколько (один ключ содержит 28 значений). Поэтому, во-первых, я даже не знаю, будет ли это работать. Но я попытался использовать другие примеры, которые я нашел здесь, только чтобы получить нуль.

говорят, как такой

'name' => somemovie 
cast => person1, person2, person3, person4, person5, person6 
poster => poster1, poster2, poster3 
year => someyear 

и так далее, и так далее

Мой вопрос: Можно ли поместить их в таблицу тузд, и если да, то как? Я использую PHP 5.3.

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

$imdb = new Imdb(); 
$movieArray = $imdb->getMovieInfo("$cat"); 
    extract ($movieArray); 
$mysqli = new mysqli("localhost", "custom_xxxx", "xxxxxxxxxx", "custom_xxxx"); 
if ($mysqli->connect_errno) { 
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
} 
echo $mysqli->host_info . "\n"; 
$result = mysqli_insert_array("imdb", $movieArray); 

if($result['mysqli_error']) { 
    echo "Query Failed: " . $result['mysqli_error']; 
} else { 
    echo "Query Succeeded! <br />"; 
    echo "<pre>"; 
    print_r($result); 
    echo "</pre>"; 
} 

?> 
+0

Какой язык на уровне приложений вы используете? Вы можете начать со следующих таблиц: фильмы (movie_id, year), актеры (actor_id, имя, dob), плакаты (poster_id, movie_id) и таблица, которая касается фильмов для актеров (movie_id, actor_id, биллинг). – Strawberry

+0

спасибо за ответ Strawberry, im используя php5.3 mysqli/mysql, поэтому вы говорите, что используете две таблицы? У меня есть эта информация, загружаемая в один массив, $ movieInfo(), честно говоря, я не знаю, как это сделать, даже написав пару ключевых значений. mysql_insert_array, я считаю, устарел, и я использовал это раньше. pdo и подготовленные заявления, я думаю, это то, как это делается сейчас. все, что мне нужно, это примерный фрагмент, и я могу понять, что остальное. Спасибо за ваше время! –

+0

Нет. Я говорю, что использую четыре таблицы. Просто создайте цикл для анализа массива.Я не php coder, но там должно быть миллиард примеров - использование методов PDO и mysqli. – Strawberry

ответ

0

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

  • movies (movie_id, год, poster_id, actor_id) - магазин фильмов здесь
  • actors (actor_id, имя, dob) - хранит информацию о актерах здесь.
  • posters (movie_id) - здесь размещается информация о постерах.

Теперь для ввода данных в базу данных. Вам нужно что-то вроде:

$imdb = new Imdb(); 
$movieArray = $imdb->getMovieInfo("$cat"); 
    extract ($movieArray); 
$mysqli = new mysqli("localhost", "custom_xxxx", "xxxxxxxxxx", "custom_xxxx"); 
if ($mysqli->connect_errno) { 
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
} 
echo $mysqli->host_info . "\n"; 
//the following code assumes $movieArray like this: 
// $movieArray = Array(
//'name' => somemovie, 
//'cast' => array(person1, person2, person3, person4, person5, person6) 
//'poster' => array(poster1, poster2, poster3) 
//'year' => someyear) 
foreach($movieArray as $row){ 
      foreach($row['cast'] as $name){ 
        mysqli_query("INSERT INTO actor values($name['name'], $name['dob'])"); 
      } 
      foreach($row['poster'] as $name){ 
      //insert into poster table 
      } 

      //add foreach loop for each table. 
} 
if($result['mysqli_error']) { 
    echo "Query Failed: " . $result['mysqli_error']; 
} else { 
    echo "Query Succeeded! <br />"; 
    echo "<pre>"; 
    print_r($result); 
    echo "</pre>"; 
} 

это не на самом деле код, как вы не показали структуру массива, но я думаю, вы получите идею. в основном, для многомерного массива вам нужно использовать цикл foreach & вставить данные в таблицы базы данных, используя оператор insert.

Для поиска вам понадобится инструкция SELECT. наконец, если у вас нет доступа к базам данных SQL &, проверьте SQL Introduction

+0

gaurish благодарю вас, что делает меня намного легче для меня понять хау. это все, что мне нужно. –

0

, если вы просто хотите сохранить массив как объект и не хотите запускать SQL запросы на нем, чем сериализовать объект и сохранить его в виде бинарного MySQL.

сериализация: http://php.net/manual/de/arrayobject.serialize.php

MySQL двоичная: http://dev.mysql.com/doc/refman/5.1/de/binary-varbinary.html

+0

Если я сериализую, можно ли вернуть его в тот же массив? им жаль, что я настолько плотный, я не делаю много sql, я в основном просто сохраняю свои вещи в переменных и массивах и использую их именно тогда, но время выполнения, чтобы захватить информацию каждый раз, составляет около 10-15 секунд, им нужно не запускать скрипт, за исключением одного раза, чтобы получить данные. –

+0

Да! Это основной смысл сериализации: представлять объект как двоичные данные для сохранения или переноса и восстановления его на один и тот же объект со старым состоянием. – hasan

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