如何在 PHP 中返回从 MySQL 获取的数组

Posted

技术标签:

【中文标题】如何在 PHP 中返回从 MySQL 获取的数组【英文标题】:How to return an array fetched from MySQL in PHP 【发布时间】: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) 或 ... 【参考方案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));

【讨论】:

以上是关于如何在 PHP 中返回从 MySQL 获取的数组的主要内容,如果未能解决你的问题,请参考以下文章

MySQL/PHP:如何获取列和关联数据

如何在 PHP 的 foreach 循环中优化大型 mySQL?

Android - 如何使用 PHP 从 MySQL 数据库中获取响应?

如何将 php 数组从 mysql 返回到谷歌地理位置

PHP - 从查询结果中获取对象数组

MySQL和PHP:如何在包含ID的数组中获取多个ID [重复]