【发布时间】: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