简体   繁体   English

PHP:json_encode()不显示任何多维数组

[英]PHP: json_encode() doesn't show anything with multidimensional array

I'm trying to make a simple PHP script that fetches a table from my MySQL database and encodes the results in JSON, so I can use them later in Java. 我正在尝试创建一个简单的PHP脚本,从MySQL数据库中获取一个表,并使用JSON对结果进行编码,因此我稍后可以在Java中使用它们。

This is my code: 这是我的代码:

<?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);
?>

This just gives a blank page as output (error messages are set to display). 这只是一个空白页面作为输出(错误消息设置为显示)。 However, if I change json_encode($output) to json_encode($output[0]) (or any other number within the array's bounds), the output becomes that one $row array . 但是,如果我将json_encode($output)更改为json_encode($output[0]) (或数组边界内的任何其他数字),则输出将成为一个$row array

This is probably a really stupid question, but after about 3 hours of research I'm at my wit's end. 这可能是一个非常愚蠢的问题,但经过大约3个小时的研究后,我才结束了。 Thank you for any help. 感谢您的任何帮助。

User @Joni led me to the solution. 用户@Joni带我到解决方案。

Adding mysql_set_charset("utf8") fixed my issue. 添加mysql_set_charset("utf8")解决了我的问题。

As mentioned in this post: Why is this PHP call to json_encode silently failing - inability to handle single quotes? 正如本文所述: 为什么这个PHP调用json_encode会无声地失败 - 无法处理单引号? .

尝试

 echo json_encode($output) ;

It seems you have some utf8 character in your result set 看来你的结果集中有一些utf8字符

add this statement before running your query 在运行查询之前添加此语句

mysql_query('SET CHARACTER SET utf8');

Update 更新

"mysql"

to

"mysqli"

and add 并添加

mysqli_set_charset($variável_de _conexão, 'utf8');

below the connection variable 在连接变量下面

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM