我正在尝试执行查询并将结果写入我的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本地运行查询,它确实按预期返回标题列表。
感谢任何帮助。
答案 0 :(得分:1)
PHP json_encode
文档说:
所有字符串数据必须采用UTF-8编码。
如果字符串不是UTF-8
,json_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';