【问题标题】:PHP: json_encode() doesn't show anything with multidimensional arrayPHP:json_encode() 不显示多维数组的任何内容
【发布时间】:2017-01-01 14:01:35
【问题描述】:

我正在尝试制作一个简单的 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 小时的研究后,我已经束手无策了。感谢您的帮助。

【问题讨论】:

  • 您使用的是什么 PHP 版本? mysql_ 函数不再存在。它们已经被弃用了几年,现在已经正式死亡。您应该改用mysqliPDO
  • 使用 print_r() 或 var_dump() 检查数组变量。
  • 根据 phpinfo(),我使用的是 v. 5.6.23-0+deb8u1。 MySQL 部分工作正常,但我还是会尝试更改它,谢谢。
  • 使用 json_last_error 检查 json_encode 是否有错误。 php.net/manual/en/function.json-last-error.php
  • “500 内部服务器错误”状态码(或空白页)表示您的脚本正在抛出错误,但您尚未配置 PHP 以显示错误消息。这是您在更进一步之前需要解决的问题,因为如果没有错误消息的帮助,很难正确编码。错误报告拇指规则是在开发中显示并在生产中登录。作为起点,我建议您在开发和调整 error_reportingdisplay_errors 指令 (details here) 的计算机中编辑系统范围的 php.ini 文件。

标签: php mysql arrays json multidimensional-array


【解决方案1】:

试试

 echo json_encode($output) ;

【讨论】:

  • 这是我第一次使用的,直到我在一些教程中找到了打印方法。两者的结果相同。
【解决方案2】:

您的结果集中似乎有一些 utf8 字符

在运行查询之前添加此语句

mysql_query('SET CHARACTER SET utf8');

【讨论】:

    【解决方案3】:

    用户@Joni 引导我找到解决方案。

    添加 mysql_set_charset("utf8") 解决了我的问题。

    如本文所述:Why is this PHP call to json_encode silently failing - inability to handle single quotes?

    【讨论】:

      【解决方案4】:

      更新

      "mysql"
      

      "mysqli"
      

      并添加

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

      在连接变量下方

      【讨论】:

        猜你喜欢
        • 2015-11-25
        • 1970-01-01
        • 1970-01-01
        • 2022-11-15
        • 1970-01-01
        • 2017-04-20
        • 2012-09-29
        • 2020-11-10
        • 2012-04-12
        相关资源
        最近更新 更多