0

https://sourceforge.net/p/wowaroryapi/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>"; }

これは、別のコードからのエラーを除いた次のようになります。 ピンクのテキストはダンプです

主にこのサイトから、読みやすい方法でデータを表示するさまざまな方法を試しましたが、常にエラーが発生します。

  1. これは間違いなくオブジェクトです。if (is_object($data)) { echo "yay!"; }<--これは機能します
  2. 一度使用する$decodedjson = json_decode($data);とオブジェクトではなくなり、結果を印刷してどのように見えるかを確認することができないようです。var_dump($decodedjson) は 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>"; }  } 

新しいエラー

ヌルヌル

4

2 に答える 2

1

警告から、PDO を使用していると思います。$conPDO インスタンスがデータベースへの接続を表している場合は、次のことを試してください。

$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>";
}
于 2013-05-03T15:21:56.480 に答える