我正在尝试使用PHP从mysql数据库生成JSON文件。到目前为止,我有:
<?php
error_reporting(-1);
$result=mysql_query("SELECT * FROM wp_posts");
$i=0;
while($row=mysql_fetch_array($result)) {
$response[$i]['post_status'] = $row['post_status'];
$response[$i]['post_title']= $row['post_title'];
$data['posts'][$i] = $response[$i];
$i=$i+1;
}
$json_string = json_encode($data);
$file = 'file.json';
file_put_contents($file, $json_string);
?>
这将创建file.json文件,但该文件仅包含“null”。
答案 0 :(得分:0)
尝试这样的事情。
error_reporting(-1);
$result = mysql_query("SELECT * FROM wp_posts");
$data = array();
while ($row = mysql_fetch_array($result)) {
$data['posts']['post_status'][] = $row['post_status'];
$data['posts']['post_title'][] = $row['post_title'];
}
$json_string = json_encode($data);
$file = 'file.json';
file_put_contents($file, $json_string);
答案 1 :(得分:0)
随机猜测:json_encode
需要UTF-8编码数据,并会显示您在任何非UTF-8非ASCII输入上描述的行为。您从数据库获取的数据可能是Latin-1编码。
将数据库连接设置为utf8
以直接从数据库接收UTF-8编码数据(请参阅UTF-8 all the way through),或使用(我不想这样说,因为此功能经常被滥用,它甚至不是很有趣,但它正确应用于此处) utf8_encode
用于从数据库获取的所有数据,以将其从Latin-1转换为UTF-8。
所以:
// 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);
...
或:
$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);
...
答案 2 :(得分:-1)
最有可能是特殊字符的UTF-8问题,试试这个
<?php
error_reporting(-1);
$result = mysql_query("SELECT * FROM wp_posts");
$i = 0;
while ($row = mysql_fetch_array($result)) {
$response[$i]['post_status'] = htmlentities($row['post_status'],ENT_COMPAT, 'ISO-8859-1');
$response[$i]['post_title'] = htmlentities($row['post_title'],ENT_COMPAT, 'ISO-8859-1');
$data['posts'][$i] = $response[$i];
$i = $i + 1;
}
$json_string = json_encode($data);
$file = 'file.json';
file_put_contents($file, $json_string);
?>