私はこれを動作させるために数ヶ月努力してきましたが、PHPで経験したことがないので、これを最初からやっていることは大変でした。JSONデータをMySQLにインポートする
次のコードを使用して生成されたJSONファイルをMySQLにインポートしようとしていますが、エラーが発生しています。JSONのフィールドがインポートデータと一致しない場所が考えられます。それぞれの行は異なります(動的に作成する方法がわかりません)。 また、SQLはインジェクションにオープンしていますが、それを修正する方法がわかりません。
<?php
// open mysql connection
$host = "localhost";
$username = "mysql_username";
$password = "mysql_password";
$dbname = "jsonimport";
$con = mysqli_connect($host, $username, $password, $dbname) or die('Error in Connecting: ' . mysqli_error($con));
// use prepare statement for insert query
$st = mysqli_prepare($con, 'INSERT INTO emp(x, y, z, lat, lon, id, color0, color1, color2, color3, color4, color5, tamedAtTime, tamedTime, tribe, tamer, name, baseLevel, health, stamina, oxygen, food, weight, melee, speed, tamed, experience) VALUES (?, ?, ?)');
// bind variables to insert query params
mysqli_stmt_bind_param($st, 'sss', $x, $y, $z, $lat, $lon, $id, $color0, $color1, $color2, $color3, $color4, $color5, $tamedAtTime, $tamedTime, $tribe, $tamer, $name, $baseLevel, $health, $stamina, $oxygen, $food, $weight, $melee, $speed, $tamed, $experience);
// read json file
$filename = 'data.json';
$json = file_get_contents($filename);
//convert json object to php associative array
$data = json_decode($json, true);
// loop through the array
foreach ($data as $row) {
// get the dino details
$x = $row['x'];
$y = $row['y'];
$z = $row['z'];
$lat = $row['lat'];
$lon = $row['lon'];
$id = $row['id'];
$color0 = $row['color0'];
$color1 = $row['color1'];
$color2 = $row['color2'];
$color3 = $row['color3'];
$color4 = $row['color4'];
$color5 = $row['color5'];
$tamedAtTime = $row['tamedAtTime'];
$tamedTime = $row['tamedTime'];
$tribe = $row['tribe'];
$tamer = $row['tamer'];
$name = $row['name'];
$baseLevel = $row['baseLevel'];
$health = $row['health'];
$stamina = $row['stamina'];
$oxygen = $row['oxygen'];
$food = $row['food'];
$weight = $row['weight'];
$melee = $row['melee'];
$speed = $row['speed'];
$tamed = $row['tamed'];
$experience = $row['experience'];
// execute insert query
mysqli_stmt_execute($st);
}
//close connection
mysqli_close($con);
?>
インポートコード:
{"x":205686.734375,"y":57330.2734375,"z":-9629.2021484375,"lat":57.2,"lon":75.7,"id":110197191702290902,"tamed":true,"team":1418527958,"female":true,"color0":14,"color4":14,"color5":14,"tamedAtTime":1166123.9561051205,"tamedTime":3275684.0438948795,"tribe":"DattoSSS","name":"Dattoss","imprinter":"Syn","baseLevel":196,"wildLevels":{"health":28,"stamina":29,"oxygen":31,"food":21,"weight":26,"melee":36,"speed":24},"fullLevel":216,"tamedLevels":{"health":5,"melee":15},"experience":14006.5849609375,"imprintingQuality":0.8208027482032776}
またJSONファイルとインポートのフォルダ全体を解析する方法はありますか? たとえば、各ファイルがObjectName_Character_BP_C.jsonである場合、各jsonファイルから同じ名前のテーブルにデータを送信する方法はありますか? 例えばパースAngler_Character_BP_C.json、およびそれらをjsonimport.Angler_Character_BP_C(mysqlのテーブル)にインポート
あなたは追加のデータが必要な場合は私に知らせてください...イムので、ここで失った:(
ちょっとファイサル、私はコードを試して、 "emp"をテーブル名に置き換えました...何も起こらない、Webページが空白で、テーブルにデータが挿入されていない – Simon
私のコードはローカルマシンでテストされています。あなたのデータベーススキーマを教えてください。 – Faisal
ここにコードを貼り付けることはできません - pastestbin - http://pastebin.com/YV7m46ic – Simon