Я пытаюсь в течение нескольких месяцев, чтобы это сработало, но поскольку я не испытывал этого с PHP, мне не удавалось делать это с нуля.Импорт данных JSON в MySQL
Я пытаюсь импортировать сгенерированный файл JSON в MySQL с приведенным ниже кодом, но продолжать получать ошибки, я верю, что там, где поля из JSON arent соответствуют данным импорта ... некоторые из полей JSON arent предоставлены таким образом каждая строка меняется (не уверен, как динамически создавать это). Также 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» на имя таблицы ...но ничего не происходит, веб-страница пуста и данные не помещаются в таблицу – Simon
Мой код протестирован на локальном компьютере. Скажите, пожалуйста, мою схему базы данных? – Faisal
не могу вставить код здесь, проверить pastebin - http://pastebin.com/YV7m46ic – Simon