【问题标题】:Getting values from JSONarray从 JSONarray 获取值
【发布时间】:2020-12-17 16:02:27
【问题描述】:

我正在编写一个 PHP 脚本

  1. 连接到数据库

  2. 获取数组中的所有订单。 ($结果)

  3. 我想遍历数组并获取所有说“userName”的内容

问题是,使用下面的代码,我只能获取数组中每个“userName”的第一个字符。我想要一个包含所有“userName”的数组。

<?php

$dbhost = 'localhost';
$dbuser = 'user';
$dbpass = 'password';
$dbname = 'dbname';

//Create database connection
$dblink = new mysqli($dbhost, $dbuser, $dbpass, $dbname);

$sql = "select * from ordertest";

$retval = mysqli_query($dblink, $sql) or die(mysqli_error($dblink));
$result = mysqli_fetch_array($retval, MYSQLI_ASSOC);

if (mysqli_num_rows($retval) > 0) {
    $arr = json_decode($result, true);

    foreach ($result as $key => $value) {
        echo $value["userName"];
    }
} else {
    echo $sql;
}

【问题讨论】:

  • 嗯,你已经得到了相当多的代码。第一个提示:$result 是一个对象,而不是要解码的 json 字符串。
  • 在代码中使用die(mysqli_error($conn)); 是一个非常糟糕的主意,因为它可能会泄露敏感信息。更多解释见这篇文章:mysqli or die, does it have to die?

标签: php arrays json sorting


【解决方案1】:

解决方案应该是下一个:

<?php

    $sql = "select * from ordertest";

    // retrieve query result from DB
    $retval = mysqli_query($dblink, $sql) or die(mysqli_error($dblink));
    
    // if result not empty
    if (mysqli_num_rows($retval) > 0) {

        // retrieve single row from $retval
        while ($result = mysqli_fetch_array($retval, MYSQLI_ASSOC)) {
            echo $result["userName"];
            echo "\n";
        }
    } else {
        echo $sql;
    }

看这里的例子:PHPize.online

【讨论】:

  • 嗯,好的,or die() 部分应该被忽略,否则我认为这个答案正是 OP 所寻找的。为什么投反对票?
  • 这段代码看起来不适合生产,所以我的意思是die() 是合法的调试,也作为echo $sql;。当然必须在生产中删除它
  • 您好 Slava。感谢您抽出宝贵时间提供帮助。回显的输出 ($result["userName"];) 看起来像是一个对象。我希望它是一个数组以将其传递给 jqgrid。我们如何以对象数组的形式回显($result)?
  • @sat 请更新您的问题并发布所需的数据格式
猜你喜欢
  • 2012-04-15
  • 2017-03-09
  • 2016-06-13
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多