无法使用php写入json文件

时间:2015-07-06 09:14:48

标签: php arrays json

我正在尝试执行查询并将结果写入我的title.json文件。

查询位于我的lib/conn.php页面,当我在浏览器中访问此页面时,我可以看到connected,当我查看NetBeans时,我可以看到文件title.json已经创建了它应该是,但它是空的。

我可以通过访问lib/conn.php页面删除并重新创建此文件,因此我的代码/数组一定有问题吗?

我目前的代码如下;

<?php

// Create connection
$db = new mysqli('localhost', 'MyDbUser', 'MyDbPass', 'MyDbName');

// Check connection
if($db->connect_errno > 0){
    die('Unable to connect to database [' . $db->connect_error . ']');
}
    else{
        echo "connected </br>";
    }

$sql = ("SELECT title FROM publication");

if(!$result = $db->query($sql)){
    die('There was an error running the query [' . $db->error . ']');
}

$data = array();

while($row = $result->fetch_assoc()){
    $data[] = $row['title'];
}

//file_put_contents('../test.txt','Hello World. Test!'); // this works

//var_dump($data); // this works

file_put_contents('../title.json', json_encode($data));

?>

出于测试目的,我尝试了var_dump($data),它以下列格式在屏幕上打印数组;

array(592) { [0]=> string(206) "Some text..." [1]=> string(183) "Some text..." [2]=> string(139) "Some text..." [3]=> string(227) "Some text...

我还在phpmyadmin本地运行查询,它确实按预期返回标题列表。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

PHP json_encode文档说:

  

所有字符串数据必须采用UTF-8编码。

如果字符串不是UTF-8json_encode将返回一个空字符串(可能希望它引发异常或产生错误/警告,但有一些......有用的信息,但很好...... php ......呵呵) 您可以尝试的是将所有字符串编码为UTF-8(仔细检查以便编码后字符串看起来正确)。
utf8_encode函数添加到数组时,使用while($row = $result->fetch_assoc()){ $data[] = utf8_encode($row['title']); } 函数最简单:

grant all on 'foo_bar_test'.* to fb_test@'127.0.0.1';