Сохранение строки JSON в базу данных MySQL
У меня есть строка JSON со мной
{"name":"jack","school":"colorado state","city":"NJ","id":null}
Мне нужно, чтобы он был сохранен в базе данных. Как я мог это сделать?
Мой PHP-код (я только установил соединение с MySQL, но я не могу сохранить записи)
<?php
// the MySQL Connection
mysql_connect("localhost", "username", "pwd") or die(mysql_error());
mysql_select_db("studentdatabase") or die(mysql_error());
// Insert statement
mysql_query("INSERT INTO student
(name, school,city) VALUES(------------------------- ) ") // (How to write this)
or die(mysql_error());
echo "Data Inserted or failed";
?>
3 ответа
Решение
Мы будем использовать json_decode
документация по json_decode
Также обязательно убежать! вот как бы я это сделал ниже...
/* create a connection */
$mysqli = new mysqli("localhost", "root", null, "yourDatabase");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* let's say we're grabbing this from an HTTP GET or HTTP POST variable called jsonGiven... */
$jsonString = $_REQUEST['jsonGiven'];
/* but for the sake of an example let's just set the string here */
$jsonString = '{"name":"jack","school":"colorado state","city":"NJ","id":null}
';
/* use json_decode to create an array from json */
$jsonArray = json_decode($jsonString, true);
/* create a prepared statement */
if ($stmt = $mysqli->prepare('INSERT INTO test131 (name, school, city, id) VALUES (?,?,?,?)')) {
/* bind parameters for markers */
$stmt->bind_param("ssss", $jsonArray['name'], $jsonArray['school'], $jsonArray['city'], $jsonArray['id']);
/* execute query */
$stmt->execute();
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
Надеюсь это поможет!
Это пример, чтобы помочь вам
<?php
$json = '{"name":"jack","school":"colorado state","city":"NJ","id":null}';// You can get it from database,or Request parameter like $_GET,$_POST or $_REQUEST or something :p
$json_array = json_decode($json);
echo $json_array["name"];
echo $json_array["school"];
echo $json_array["city"];
echo $json_array["id"];
?>
Надеюсь, это поможет!
Декодируйте в массив и передайте его в свой mysql_query, код ниже не использует mysql_real_escape_string или любые другие средства безопасности, которые вы должны реализовать.
Предположим, что $json - это {"name":"jack","school":"colorado state","city":"NJ","id":null}
$json_array = json_decode($json);
Теперь у вас есть индексы в массиве php, такие как: $json_array['name']
mysql_query("INSERT INTO student (name, school,city) VALUES('".$json_array['name']."', '".$json_array['school']."', '".$json_array['city']."') ") or die(mysql_error());