1

好的,首先,感谢您阅读我的问题,我将尝试添加尽可能多的信息。我目前正在为 Garrysmod 游戏类型制作排行榜,我从游戏模式的编码人员那里获得了一个 API 密钥,并且使用该 API 密钥我可以使用 STEAM_ID 提取 JSON 编码的数组

示例: http ://www.revoltgaming.com/api/?key=SENCORED_API_KEY&action=ajack_all&steamid=STEAM_0:0:5898349

如果我使用下面的代码一切正常:

$usr_url_everything = "http://www.revoltgaming.com/api/?key=114d788c3e40e91842f945f19c978e66&action=ajack_all&steamid=" . $_SESSION['STEAMID'];
$json_encoded = file_get_contents($usr_url_everything);
$json_decoded = json_decode($json_encoded, true);

但我所做的是,当用户第一次加入时,我会提取他的 JSON 字符串并将其保存在 MySQL 数据库中:

$usr_url_everything = "http://www.revoltgaming.com/api/?key=114d788c3e40e91842f945f19c978e66&action=ajack_all&steamid=" . $_SESSION['STEAMID'];
$json_encoded = file_get_contents($usr_url_everything);
$query = "INSERT INTO vm_leaderboard (`txtUser`, `txtJson`) VALUES ('" . $_SESSION['STEAM64'] . "', '" . $json_encoded . "')";

但是从我尝试解码从数据库中提取的 json 字符串的那一刻起,它就不起作用了,它返回 NULL。我保存在数据库中的 json 字符串与我直接从 API 页面获取的字符串相同。

以下是从数据库中提取的字符串: http ://www.ishots-cave.com/revolt_/lb_applejack.php

4

2 回答 2

2

因此,正如我在评论中发布的那样,将其转换为有用的答案 - JSON 字符串需要在插入数据库之前进行清理:

$usr_url_everything = "http://www.revoltgaming.com/api/?key=&action=ajack_all&steamid=" . $_SESSION['STEAMID'];
$json_encoded = file_get_contents($usr_url_everything);
// sanitize the JSON string
$json_encoded = mysql_real_escape_string($json_encoded);
// insert in common way
$query = "INSERT INTO vm_leaderboard (`txtUser`, `txtJson`) VALUES ('" . $_SESSION['STEAM64'] . "', '" . $json_encoded . "')";

享受!

于 2012-06-15T14:33:46.323 回答
1

JSON 文件中的反斜杠和引号可能会改变您的查询。所以再试一次代码如下:

$query = "INSERT INTO vm_leaderboard (`txtUser`, `txtJson`) VALUES ('" . $_SESSION['STEAM64'] . "', '" . mysql_real_escape_string($json_encoded) . "')";
于 2012-06-15T14:26:28.150 回答