sql >> Base de Datos >  >> RDS >> Mysql

Use PHP para volcar valores mysql en un archivo JSON

Suposición aleatoria:json_encode espera datos codificados en UTF-8 y exhibirá el comportamiento que usted describe en cualquier entrada que no sea UTF-8 ni ASCII. Es probable que los datos que obtiene de la base de datos estén codificados en Latin-1.

Establece la conexión de tu base de datos a utf8 para recibir datos codificados en UTF-8 directamente desde la base de datos (consulte UTF-8 completo ), o use (y odio decir esto, porque se abusa de esta función con tanta frecuencia que ni siquiera es divertido, pero se aplica correctamente aquí) utf8_encode en todos los datos que obtiene de la base de datos para convertirlos de Latin-1 a UTF-8.

Así que:

// set the connection charset
mysql_set_charset('utf8');

$result = mysql_query("SELECT post_status, post_title FROM wp_posts");

$data = array();
while ($row = mysql_fetch_assoc($result)) { 
    $data['posts'][] = $row;
} 

$json_string = json_encode($data);

...

o:

$result = mysql_query("SELECT post_status, post_title FROM wp_posts");

$data = array();
while ($row = mysql_fetch_assoc($result)) { 
    $row = array_map('utf8_encode', $row);
    $data['posts'][] = $row;
} 

$json_string = json_encode($data);

...