我想做一个简单的PHP脚本,从我的MySQL数据库中获取一个表,并在JSON中编码结果,这样我就可以在Java中使用它们。
这是我的代码:
<?php
$servername = "localhost:3036";
$username = "example_user";
$password = "example_password";
$conn = mysql_connect($servername, $username, $password);
if(! $conn) {
die("Could not connect: " . mysql_error());
}
$sql = "SELECT * FROM table_name";
mysql_select_db("database_name");
$retval = mysql_query($sql, $conn);
if(! $retval) {
die("Could not get data: " . mysql_error());
}
while($row = mysql_fetch_assoc($retval)) {
$output[]=$row;
}
print(json_encode($output));
mysql_close($conn);
?>
这只是给出一个空白页作为输出(错误消息被设置为显示)。但是,如果我将json_encode($output)
更改为json_encode($output[0])
(或数组边界内的任何其他数字),则输出变为一个$row array
。
这可能是一个非常愚蠢的问题,但是经过大约3个小时的研究,我已经无计可击了。谢谢你的帮助。
用户@Joni引导我找到了解决方案。
添加mysql_set_charset("utf8")
修复了我的问题。
在这篇文章中提到:为什么这个PHP调用json_encode静默失败-无法处理单引号?
Try
echo json_encode($output) ;
您的结果集中似乎有一些utf8字符
在运行查询前添加此语句
mysql_query('SET CHARACTER SET utf8');
更新
"mysql"
"mysqli"
并添加
mysqli_set_charset($variável_de _conexão, 'utf8');
连接变量