【问题标题】:Json array not showing output valuesJson数组不显示输出值
【发布时间】:2017-01-23 18:34:01
【问题描述】:

我的代码需要帮助。我一直在寻找引用相同问题的问题。但我什么都没找到。

问题是它在输出中没有显示任何内容。 (字面上什么都没有,只是一个空白页。)所有的主机、用户、密码、数据库名和查询都很好。我对它们进行了三次检查。

这是我的代码:

<?php

    define('HOST', 'host');
    define('USER', 'user');
    define('PASS', 'root');
    define('DB', 'database');

    $con = mysqli_connect(HOST,USER,PASS,DB);
    $sql = "SELECT * FROM teams";
    $res = mysqli_query($con,$sql);


    $result = array();

    while($row = mysqli_fetch_array($res)){
        array_push($result, array(
            'id_team'=>$row[0],
            'name'=>$row[1]
        ));
    }

    echo json_encode(array("result"=>$result));

    mysqli_close($con);

?>

我使用了var_dump($result);,它向我展示了完整的数组,如下所示:

array(134) { [0]=> array(4) { ["id_team"]=> string(1) "3" ["name"]=> 字符串(6)“Baddis”} [1]=> 数组(4){ [“id_equipo”]=> 字符串(1)“4” ["name"]=> string(6) "组合"}

假设我必须收到如下输出:

[ {"id_team":"3","name":"Baddis"}, {"id_team":"4","name":"Combis"} ]

所以,我不知道我缺少什么或我的代码有什么问题。有人可以帮我吗?

编辑 2: 我使用了另一个简单的代码,但它是一样的,我不能得到超过 X 的输出。我的数据库中有 135 行,我只能检索 70 个团队的 4 列,如果我删除一列,我可以得到 80 个团队,这就像一个限制或最大字符之类的东西......仍然有同样的问题:

<?php
    $query=mysql_query("SELECT id_team,name,cat,tel FROM teams")
    while($row=mysql_fetch_assoc($query))
            $array[]=$row;
    print(utf8_encode($array));
    mysql_close();
?>

【问题讨论】:

  • 你试过 $result = json_enocde(mysqli_fetch_assoc($res)); var_dump($result); ??
  • @Kaylined - 刚刚尝试过,但现在我得到的输出与以前几乎相同,但 db 值不完整,我每行只收到 1 个字母。
  • 如果你做 echo json_encode($result); 怎么办?

标签: php arrays json mysqli


【解决方案1】:

您的 PHP 版本是否 >= 5.2.0?您的 json 版本是否 >= 1.2.0?这个功能 仅适用于等于或高于这些版本的版本。

要检查这一点,请创建一个这样的 php 文件:

<? 
phpinfo();

然后运行它。 PHP版本是最先出现的,在页面顶部:

PHP Version 5.6.25

JSON 版本应该出现在页面下方:

json
json support    enabled
json version    1.3.6

Json 支持应该自动包含在 PHP >= 5.2.0 中。

要检查 json_encode 函数是否正常工作,根据您的代码,您可以试试这个:

<?php

$result = array();

    array_push($result, array(
        'id_team'=>"1",
        'name'=>"Test1"
    ));
    array_push($result, array(
        'id_team'=>"2",
        'name'=>"Test2"
    ));
    array_push($result, array(
        'id_team'=>"3",
        'name'=>"Test3"
    ));

echo json_encode(array("result"=>$result));

这是这段代码应该产生的输出:

{"result":[{"id_team":"1","name":"Test1"},{"id_team":"2","name":"Test2"},{"id_team":"3","name":"Test3"}]}

【讨论】:

  • PHP 版本 5.6.29 JSON 版本 1.2.1 是的,该代码有效。但主要问题是,当我从 mysql 数据库中调用很多行时,数组没有返回我的任何内容,一个空页面......我不确定 json 中是否存在字符的最大限制或其他内容,或者我没有不知道...
  • 嗯,您可能处于内存不足或超时的情况。为了测试,请尝试在您的代码之前输入:set_time_limit(0);ini_set ('memory_limit', -1);ini_set('default_socket_timeout', '300');
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多