2016-12-06 6 views
0

JSON配列からPHPコードを作成してMySQLに書きたいと思います。これどうやってするの?以下は私のJSON配列です:JSONをPHP配列に変換してMySQLに保存するPHPスクリプトを作成

{ 
    "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があります。

あなたの特別なケースでは、クエリを生成するためのクイックスクリプトが必要なだけです。私は "学校1"、 "学校2" ....テーブルの外部キーであると仮定しています。私はPDOではなくエスケープ文字のエラーを防ぐためにaddslashes関数を使用します。

$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; 
関連する問題