【问题标题】:How to return an array fetched from MySQL in PHP如何在 PHP 中返回从 MySQL 获取的数组
【发布时间】:2015-11-15 20:43:04
【问题描述】:

我试图返回一个从存储在 PHP 文件中的公共函数调用的数组。 我需要导出的返回数组是 JSON 格式。 我有以下代码用于调用数组(在其他情况下有效),但输出只是数组(phpMyAdmin 中的 sql 返回所有数据)

这是应该返回数组的公共函数,存储在一个通用的 PHP 类文件中。

public function getIssueList() {
    $sql = "select * from IssueData";
    $returnValue = array();

    $result = $this->conn->query($sql); // makes the connection and executes the sql

    if ($result != null) {
        $row = $result->fetch_array(MYSQLI_ASSOC);
        if (!empty($row)) {
            $returnValue = $row;
        }
    }

    return $returnValue;

}

然后我从下面的代码调用公共函数:

$result = $dao->getIssueList(); //opens the connection and calls the public function

echo $result;

但我得到的回显结果只是“数组”这个词

上面的代码适用于其他公共函数,但在这种情况下它只返回一行而不是多行。 我还需要将数组作为关联数组。

可能出了什么问题?

【问题讨论】:

  • $returnValue = $row; 更改为$returnValue[] = $row;echo $result; 更改为print_r($result);
  • (1) ->fecth_array() -> Fetch a 结果行...,所以如果你想要多行,你需要做一个循环,并将每一行添加到大批。 (2) 因为return $returnValue; 会返回一个数组,所以你不能只是echo $result;。您可以使用 print_r($result);var_dump($result) 或 ...

标签: php mysql arrays


【解决方案1】:

你可以json_encode (http://php.net/manual/en/function.json-encode.php)

echo json_encode($result);

【讨论】:

    【解决方案2】:

    您必须将 $result 作为 json_encode($result) 返回,此外,要正确填充数组,您必须执行 $returnValue[] = $row;

    (你可能想要做一个while循环来填充你的数组)

    【讨论】:

      【解决方案3】:

      要获取多行而不是仅一行,请使用 while 循环:

      if ($result != null) {
      $row = $result->fetch_array(MYSQLI_ASSOC);
          while(!empy($row)){
              $returnValue = array_merge($returnValue, $row);
              $row = $result->fetch_array(MYSQLI_ASSOC);
          }
      return $returnValue; 
      }
      

      【讨论】:

      • 为什么不直接使用while($row = $result->fetch_array(MYSQLI_ASSOC)){ $returnValue = array_merge($returnValue, $row);} 而不是 $row = $result->fetch_array(MYSQLI_ASSOC); while(!empy($row)){ $returnValue = array_merge($returnValue, $row); $row = $result->fetch_array(MYSQLI_ASSOC); },因为那是很多冗余代码。
      【解决方案4】:

      好吧,主要问题是我使用的是 echo 而不是 print_r。

      下面的代码也改了:

      if ($result != null) {
          $row = $result->fetch_array(MYSQLI_ASSOC);
          if (!empty($row)) {
              $returnValue = $row;
          }
      }
      

      到:

      if ($result != null) {
              while ($returnValue[] = $result->fetch_array(MYSQLI_ASSOC));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-11
        • 2018-01-13
        • 1970-01-01
        • 2011-04-27
        相关资源
        最近更新 更多