将JSON字符串保存到MySQL数据库

8

我有一个 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个回答

17

我们将使用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();

希望这能帮到你!


我不明白jsonGiven是什么。我的JSON字符串是这个{"name":"jack","school":"colorado state","city":"NJ","id":null}。但我无法从我的PHP代码中读取它。 - Sharon Watinsan
jsonGiven是示例参数名称,其中值为您的JSON字符串。例如:http://example.com/thisScript.php?jsonGiven={"name":"jack",etc..} - sevenadrian

1

这是一个帮助你的例子

<?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"];
?>

希望这有帮助!

0

将其解码为数组并传递给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());  

在我的 Firebug 控制台中,我正在发布 {"name":"jack","school":"colorado state","city":"NJ","id":null},那么我该如何获取这个值并像你的代码中所示保存到 $json 中呢? - Sharon Watinsan
你说的转义是什么意思?抱歉,我是 PHP 的新手。 - Sharon Watinsan
我该如何将 JSON 字符串接收到 $json 变量中? - Sharon Watinsan
我以为你已经有了它,如果你说它显示在你的Firebug控制台上,那么它是从哪里显示出来的?谁创建了它?请解释一下,这样我就可以帮助你将其转换成$json。 - André Catita
如果您的JSON信息是通过表单输入的,您该如何进行编码? - Ken Gordon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接