0

我正在尝试使用 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”。

4

3 回答 3

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);
于 2013-10-08T13:49:36.627 回答
0

随机猜测:json_encode需要 UTF-8 编码的数据,并且会表现出您在任何非 UTF-8、非 ASCII 输入上描述的行为。您从数据库中获取的数据可能是 Latin-1 编码的。

要么将你的数据库连接设置utf8为直接从数据库接收 UTF-8 编码的数据(参见UTF-8 一直到),要么使用(我讨厌这样说,因为这个功能经常被滥用,它甚至不好笑,但它在此处正确应用) 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);

...
于 2013-10-08T13:52:41.113 回答
-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);
?> 
于 2013-10-08T14:07:25.583 回答