PHP:json_encode()没有显示多维数组的任何内容

时间:2016-08-25 08:23:19

标签: php mysql arrays json multidimensional-array

我试图创建一个简单的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个小时的研究后,我才结束了。谢谢你的帮助。

4 个答案:

答案 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');

在连接变量

下面