【问题标题】:PHP Sql, returns one rowPHP Sql,返回一行
【发布时间】:2016-07-02 12:19:32
【问题描述】:

我有以下代码调用一个数据库函数,该函数从表中检索所有行,然后在 JSON 中回显它们。

$key = $db->getKeyPermissions();

    if ($key != false) {
        // use is found
        $response["error"] = FALSE;
        $response["key"]["endpoint_name"] = $key["endpoint_name"];
        $response["key"]["live"] = $key["live"];
        $response["key"]["activity_name"] = $key["activity_name"];
        echo json_encode($response);
    } else {

这是数据库函数

public function getKeyPermissions()
    {
        $stmt           = $this->conn->prepare("SELECT * FROM key_permissions WHERE 1");
        if ($stmt->execute()) {
            $key = $stmt->get_result()->fetch_assoc();
            $stmt->close();
            return $key;
        } else {
            return NULL;
        }
    }

这一切都很好,只是它只返回第一行然后停止。读到你必须循环fetch_assoc(),但我无法让它工作。我希望将所有行推入$key 并返回,但所有尝试都会导致数组转换和非对象错误。有人可以帮助我吗?

编辑:

public function getKeyPermissions()
{
    $stmt           = $this->conn->prepare("SELECT * FROM key_permissions WHERE 1");
    if ($stmt->execute()) {
        $key = array();

        while($row = $stmt->get_result()->fetch_assoc()) { //Call to a member function fetch_assoc() on a non-object
            $key .= $row; // Array to string conversion 
        }

        $stmt->close();
        return $key;
    } else {
        return NULL;
    }
}

【问题讨论】:

  • while($key = $stmt->get_result()->fetch_assoc()) { ... } ? ...就在我的脑海中 - 虽然缺乏错误捕获。
  • @CD001 之前也尝试过,但我返回了数组转换错误和非对象上的 fetch_assoc。我用我的新代码和返回错误的行后面的注释编辑了我的帖子。
  • Call to a member function fetch_assoc() on a non-object 在这种情况下 get_result() 返回 false。
  • Array to string conversion 这不是您将数据附加到数组的方式,请尝试$key[] = $row;.= 是字符串连接)
  • 好吧,数组转换错误更有意义,我的错 :) 不知道如何处理另一个错误。它如何返回 false,以及如何处理它?

标签: php mysql arrays json fetch


【解决方案1】:

您想准确地调用get_result一次,并且只要有行就调用fetch_assoc

$result = $stmt->get_result();
$key = array();

while ($row = $result->fetch_assoc()) {
    $key[] = $row;
}

return $key;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 2018-05-10
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多