1

Zend Framework (1.12) を使用しており、JSON ファイルに基づいてテーブルを作成したいと考えています。テーブルとそのフィールドは既に作成済みです (現在はすべてロングテキストです)。後は、それらを適切な列に挿入するだけです。私はこれらの例に従いました:

http://www.daniweb.com/web-development/php/threads/381669/json-to-mysql-with-php (2 回目の投稿) JSON を mySQL に解析する

問題は、すべてのオブジェクトを含む配列を含む JSON の構成が異なることです (私の場合、Actie と呼ばれる「ルート要素」があり、正しい用語はわかりません)。現在、私はこのコードを使用しています:

$actieurl = "http://creative3s.com/thomas/nmdad/actie.json";
        $my_arr = json_decode(file_get_contents($actieurl));

        $db = new Zend_Db_Adapter_Pdo_Mysql(array(
            'host' => 'localhost',
            'username' => 'root',
            'password' => NULL,
            'dbname' => 'zf-tutorial'
            ));

        foreach($my_arr as $key => $value){
            $sql[] = (is_numeric($value)) ? "`$key` = $value" : "`$key` = '" . mysql_real_escape_string($value) . "'"; 
        }

        $sqlclause = implode(",",$sql);
        $query = "INSERT INTO `testerdetest` SET $sqlclause";
        $db->query($query);

しかし、配列を渡しているというエラーが表示されます。

Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in C:\Users\Thomas\Documents\GitHub\NMDAD-testing\application\controllers\IndexController.php on line 29

この形式の JSON でこれを解決する方法を知っている人はいますか? JSON は決して変更できないことに注意してください。追加のリンク:

JSON: http://creative3s.com/thomas/nmdad/actie.json テーブル構造: http://i.imgur.com/KtXeEuw.png

4

1 に答える 1

2

json データには最上位のキー「Actie」があるため、ループする必要があります$my_arr->Actie

コードを次のように単純化できます。

$actieurl = "http://creative3s.com/thomas/nmdad/actie.json";
$my_arr = json_decode(file_get_contents($actieurl));

$db = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host' => 'localhost',
    'username' => 'root',
    'password' => NULL,
    'dbname' => 'zf-tutorial'
));

foreach($my_arr->Actie as $row){
    $db->insert('testerdetest', (array)$row);
}
于 2013-01-22T16:03:00.183 に答える