php - query - Analizando la tabla JSON a MySQL
where like laravel (1)
Estoy usando Zend Framework (1.12) y me gustaría crear una tabla basada en un archivo JSON. Ya he creado la tabla y sus campos (todos son texto largo por ahora), todo lo que tiene que hacer es insertarlos en las columnas de la derecha. Seguí estos ejemplos:
http://www.daniweb.com/web-development/php/threads/381669/json-to-mysql-with-php (segunda publicación) Parse JSON en mySQL
El problema es que mi JSON está construido de forma diferente (el mío tiene un "elemento raíz" llamado Actie, realmente no conozco el término correcto) que contiene una matriz con todos los objetos. Actualmente estoy usando este código:
$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);
Pero me aparece un error al decir que paso una matriz:
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
¿Alguien sabe cómo resolver esto con un JSON de este formato? Tenga en cuenta que no puedo alterar el JSON de ninguna manera. Enlaces adicionales:
JSON: http://creative3s.com/thomas/nmdad/actie.json Estructura de tabla: http://i.imgur.com/KtXeEuw.png
Los datos de json tienen la clave de nivel superior "Actie", por lo que debe pasar por $my_arr->Actie
.
Puedes simplificar tu código solo a:
$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);
}