Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Use PHP para despejar valores mysql no arquivo JSON


Suposição aleatória:json_encode espera dados codificados em UTF-8 e exibirá o comportamento que você descreve em qualquer entrada não UTF-8 e não ASCII. Os dados que você está obtendo do banco de dados provavelmente são codificados em Latin-1.

Ou defina sua conexão de banco de dados para utf8 para receber dados codificados em UTF-8 diretamente do banco de dados (consulte UTF-8 até o fim ), ou use (e eu odeio dizer isso, porque essa função é tão frequentemente abusada que nem é engraçada, mas é aplicada corretamente aqui) utf8_encode em todos os dados obtidos do banco de dados para convertê-los de Latin-1 para UTF-8.

Então ou:
// 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);

...

ou:
$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);

...