JSON解析到MySQL表(Parsing JSON to MySQL table)

2019-08-07 20:05发布

我使用Zend框架(1.12),我想创建一个基于JSON文件的表。 我已经创建的表及其字段(他们都LONGTEXT现在),所有它需要做的就是将它们插入到右列。 我跟着这些例子:

http://www.daniweb.com/web-development/php/threads/381669/json-to-mysql-with-php (第二柱) 解析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

Answer 1:

Your json data has the top level key 'Actie', so you need to be looping through $my_arr->Actie.

You can simplify your code to just:

$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);
}


文章来源: Parsing JSON to MySQL table