首页 > 解决方案 > 如何将 JSON 字符串传递到 MySQL?

问题描述

我尝试使用 PHP 将 JSON 字符串传递到 MySQL DB。但在 DB 表中插入“数组”,并在 debug.txt 文件中插入普通字符串。

    require("conf/mysql.php");

if(!empty($_POST)){
    $json = $_REQUEST;
    $obj = $json;
    $sql = "INSERT INTO server_info (`data`) VALUES ('".mysqli_real_escape_string($obj)."')";
    file_put_contents("debug.txt", $obj);
    if (!$result = $mysqli->query($sql)) file_put_contents("db.log", "DB failure while executing query\n$mysqli->error\n$sql");
}
else
    die("Illegal method!");

调试.txt

{"Map":"gm_metro_nekrasovskaya_line_v3","PlayerCount":1.0,"Wagons":0.0,"MaxWagons":6.0,"MaxPlayers":15.0,"ServerName":"Verona General Metrostroi","Players":[{"SteamID":"STEAM_0:1:57045033","Nick":"thescs","Rank":"superadmin","Time":8776.0,"Position":"Депо"}]}

怎么了?

标签: phpmysqljson

解决方案


$_REQUEST是一个数组。mysqli_real_escape_STRING接受一个字符串。file_put_contents接受一个字符串或一个数组(s.文档)。file_put_contents 函数将数组自动转换为数组的可读字符串版本。mysqli_real_escape_string 不要这样做。

json_encode解决方案:使用(文档)将数组转换为字符串


推荐阅读