我试图创建一个简单的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个小时的研究后,我才结束了。谢谢你的帮助。
答案 0 :(得分:1)
用户@Joni带我到解决方案。
添加mysql_set_charset("utf8")
解决了我的问题。
正如本文所述:Why is this PHP call to json_encode silently failing - inability to handle single quotes?。
答案 1 :(得分:0)
尝试
echo json_encode($output) ;
答案 2 :(得分:0)
您的结果集中似乎有一些utf8字符
在运行查询之前添加此语句
mysql_query('SET CHARACTER SET utf8');
答案 3 :(得分:-1)
更新
"mysql"
到
"mysqli"
并添加
mysqli_set_charset($variável_de _conexão, 'utf8');
在连接变量
下面