我正在使用https://sourceforge.net/p/wowarmoryapi/home/Home/的php库。它从battle.net中提取json数据并将其存储在我的数据库中以用于缓存原因。
从db获取json的代码(我不确定它是否仍然被认为是json):
$data = $con->query('SELECT Data FROM wa_guilds');
我使用以下代码查看数据:
foreach($data as $row) {
echo "<span style='color:#ff0099'>";
var_dump($row);
echo "</span>"; }
看起来像这样减去错误,这来自另一个代码:
我尝试了各种方法,主要是从这个网站以一种易于阅读的方式显示我的数据,但我总是得到错误。
if (is_object($data)) { echo "yay!"; }
&lt; - 此作品$decodedjson = json_decode($data);
它不再是一个对象,我似乎无法打印结果以查看它的外观。 var_dump($ decodingjson)返回NULL 最后,当我使用以下代码时:
foreach ($data as $da){
echo $da['Data']['character']['name']; }
返回警告:非法字符串偏移'字符'
和
foreach ($data as $da){
echo $da['character']['name']; }
返回注意:未定义的索引:字符
我不明白我做错了什么,或者是对的。我是否需要以某种方式将$ data转换为字符串?
$sth = $con->query('SELECT Data FROM wa_guilds');
$sth->execute();
$data = $sth->fetchAll(PDO::FETCH_ASSOC);
foreach($data as $row) {
foreach($row as $r) {
$myData = json_decode($r, true);
echo "<span style='color:#ff0099'>";
var_dump($myData['Data']);
echo "</span>"; } }
NULL NULL
答案 0 :(得分:1)
从警告中我猜你正在使用PDO。如果$con
是表示与数据库连接的PDO实例,请尝试以下操作:
$sth = $con->prepare('SELECT Data FROM wa_guilds');
$sth->execute();
$data = $sth->fetchAll(PDO::FETCH_ASSOC);
foreach($data as $row) {
$myData = json_decode($row['Data'], true);
echo "<span style='color:#ff0099'>";
// $myData should now be a PHP array which you can access easily
print_r($myData);
echo "</span>";
}
答案 1 :(得分:0)
你需要首先转换json字符串,我不确定你期望从DB中有多少行,但如果它只是一行你不需要循环:
$data = $sth->fetchAll(PDO::FETCH_ASSOC);
$decoded = json_decode($data['Data'], true);
echo "<span style='color:#ff0099'>";
var_dump($decoded);
echo "</span>";
如果你需要一个循环它应该像这样工作:
foreach($data as $d)
{
$decoded = json_decode($d['Data'], true);
echo "<span style='color:#ff0099'>";
var_dump($decoded);
echo "</span>";
}