2016-12-06 3 views
0

Из массива JSON я хочу создать PHP-код и записать его в MySQL. Как я могу это сделать? Ниже представлен мой массив JSON:Напишите PHP-скрипт для преобразования JSON в массив PHP для хранения в MySQL

{ 
    "school1":[ 
     { 
     "name":"aaa Universe", 
     "url":"http:\/\/aaa_Universe.com\/" 
     }, 
     { 
     "name":"bbb Universe", 
     "url":"http:\/\/bbb_Universe.com\/" 
     } 
    ], 
    .................................... 
    .................................... 
    "school4":[ 
     { 
      "name":"ggg Universe", 
     "url":"http:\/\/ggg_Universe.com\/" 
     }, 

     { 
      "name":"hhh Universe", 
     "url":"http:\/\/hhh_Universe.com\/" 
     } 
    ] 
} 

Я написал ниже PHP-скрипт, чтобы получить ожидаемый результат. Могли бы вы предложить другой путь:

$data = file_get_contents ("list.json"); 
$json = json_decode($data, true); 
foreach ($json as $key => $value) { 
    if (!is_array($value)) { 
     echo $key . '=>' . $value . '<br/>'; 
    } else { 
     foreach ($value as $key => $val) { 
      echo $key . '=>' . $val . '<br/>'; 
     } 
    } 
} 
+3

$ jsonarray = json_decode ($ data, true);
print_r ($ jsonarray); –

+0

что вам нужно? –

+1

и в чем проблема? Вы еще не пишете никому db, этот код отсутствует. – Jeff

ответ

1

При создании динамического запроса, объекты PHP данных (PDO) является метод, который вы должны использовать почти во всех случаях. PDO предотвращает угрозу эвакуационных символов или вызывает ошибки. Вот link.

Это, в вашем конкретном случае, я считаю, что для генерации запроса нужен только быстрый скрипт. Я предполагаю, что «school1», «school2» ... являются внешними ключами таблицы. Я буду использовать функцию addlashes для предотвращения ошибок в escape-символах вместо PDO.

$data = file_get_contents ("list.json"); 
$json = json_decode($data, true); 

$statement = ""; 
foreach ($json as $school => $schools) {   
    if (count($schools) > 0) { 
     foreach($schools as $i => $schoolInfo){ 
      if($statement == ""){ 
       $statement .= "INSERT INTO dataBase.table (school,name,url) VALUES"; 
       $statement .= " ('".addslashes($school)."', '".addslashes($schoolInfo['name'])."','" . addslashes($schoolInfo['url']) ."')"; 
      }else{ 
       $statement .= ", ('".addslashes($school)."', '".addslashes($schoolInfo['name'])."','" . addslashes($schoolInfo['url']) ."')";   
      } 
     } 
    } 
} 

echo $statement; 

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

  • Нет связанных вопросов^_^