【发布时间】:2016-12-24 06:30:45
【问题描述】:
几个月来我一直在努力让它工作,但由于我对 PHP 没有那么丰富的经验,所以我没有从头开始做这件事的运气。
我正在尝试使用以下代码将生成的 JSON 文件导入 MySQL,但不断出现错误,我相信 JSON 中的字段与导入数据不匹配的位置...某些 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表)
如果您需要更多数据,请告诉我...我在这里迷路了:(
【问题讨论】: