Я пытаюсь разобрать некоторые данные json в базу данных mysql из файла. Мой исходный код был следующим:
<?php $response = array(); $res=array(); $json = file_get_contents('C:\Users\Richard\Desktop\test.json'); if($json!=null){ $decoded=json_decode($json,true); //$decode= var_dump($decoded); //$ss=$decode["array"]; //echo $decoded['number']; if(is_array($decoded["configurationItems"])) { foreach($decoded["configurationItems"] as $configurationItems) //for($i=0;$i>sizeof($decoded["configurationItems"]);$i++) { $configurationItemVersion=$configurationItems["configurationItemVersion"]; echo "<br />","configurationItemVersion:",$configurationItemVersion,"<br />"; $configurationItemCaptureTime=$configurationItems["configurationItemCaptureTime"]; echo "configurationItemCaptureTime:",$configurationItemCaptureTime,"<br />"; $configurationStateId=$configurationItems["configurationStateId"]; echo "configurationStateId:",$configurationStateId,"<br />"; $result = mysql_query("INSERT INTO configuration_item(configurationItemVersion,configurationItemCaptureTime,configurationStateId) VALUES('$configurationItemVersion','$configurationItemCaptureTime','$configurationStateId')")or die("Insert Failed ".mysql_error());; }// check if row inserted or not if ($result) { // successfully inserted into database $response["code"] = 1; $response["message"] = "successfully stored"; // echoing JSON response echo json_encode($response); } else { // failed to insert row $response["code"] = 2; $response["message"] = "Oops! An error occurred."; // echoing JSON response echo json_encode($response); } } }
?>
которые потерпели неудачу из-за лишения; поэтому вместо того, чтобы изменять обработчик ошибок, чтобы игнорировать эту (действительно плохую практику), я решил конвертировать в mysqli, используя удобный инструмент преобразования, полученный здесь: https://github.com/philip/MySQLConverterTool
Я запустил конвертер на вышеупомянутый код и создал следующее:
<?php $response = array(); $res=array(); $json = file_get_contents('C:\Users\Richard\Desktop\test.json'); if($json!=null){ $decoded=json_decode($json,true); //$decode= var_dump($decoded); //$ss=$decode["array"]; //echo $decoded['number']; if(is_array($decoded["configurationItems"])) { foreach($decoded["configurationItems"] as $configurationItems) //for($i=0;$i>sizeof($decoded["configurationItems"]);$i++) { $configurationItemVersion=$configurationItems["configurationItemVersion"]; echo "<br />","configurationItemVersion:",$configurationItemVersion,"<br />"; $configurationItemCaptureTime=$configurationItems["configurationItemCaptureTime"]; echo "configurationItemCaptureTime:",$configurationItemCaptureTime,"<br />"; $configurationStateId=$configurationItems["configurationStateId"]; echo "configurationStateId:",$configurationStateId,"<br />"; $result = mysqli_query($GLOBALS["___mysqli_ston"], "INSERT INTO configuration_item(configurationItemVersion,configurationItemCaptureTime,configurationStateId) VALUES('$configurationItemVersion','$configurationItemCaptureTime','$configurationStateId')")or die("Insert Failed ".((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error( "]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));; }// check if row inserted or not if ($result) { // successfully inserted into database $response["code"] = 1; $response["message"] = "successfully stored"; // echoing JSON response echo json_encode($response); } else { // failed to insert row $response["code"] = 2; $response["message"] = "Oops! An error occurred."; // echoing JSON response echo json_encode($response); } } } ?>
при запуске этого кода я получаю сообщение об ошибке в заголовке (Undefined index: ___mysqli_ston) и понятия не имею, как его исправить, любая помощь будет высоко оценена.
ps Я использую laravel framework, если это имеет значение или открывает другие решения.
Теперь я знаю, что ошибка связана с тем, что у меня нет строки подключения к базе данных, т.е. $ GLOBALS ["___ mysqli_ston генерируется генератором.
я понял, что laravel позаботился о том, чтобы определить соединение с базой данных в своей архитектуре mvc, и поэтому это не нужно переопределять. с учетом этого, как будет выглядеть мой код?
вы должны подключиться к mysql, используя что-то вроде этого
$con=mysqli_connect("localhost","my_user","my_password","my_db");
замените эту строку
$result = mysqli_query($GLOBALS["___mysqli_ston"], "INSERT INTO configuration_item(configurationItemVersion,configurationItemCaptureTime,configurationStateId)
с этим
$result = mysqli_query($con, "INSERT INTO configuration_item(configurationItemVersion,configurationItemCaptureTime,configurationStateId)