PHP Sql, returns 一行
PHP Sql, returns one row
我有以下代码调用数据库函数,该函数从 table 检索所有行,然后将它们回显到 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 {
这是DB函数
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;
}
}
这一切都很好,只是它只 returns 第一行然后停止。读到你必须循环 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;
}
}
您想调用 get_result
恰好 一次 ,并且 fetch_assoc
只要有行:
$result = $stmt->get_result();
$key = array();
while ($row = $result->fetch_assoc()) {
$key[] = $row;
}
return $key;
我有以下代码调用数据库函数,该函数从 table 检索所有行,然后将它们回显到 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 {
这是DB函数
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;
}
}
这一切都很好,只是它只 returns 第一行然后停止。读到你必须循环 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;
}
}
您想调用 get_result
恰好 一次 ,并且 fetch_assoc
只要有行:
$result = $stmt->get_result();
$key = array();
while ($row = $result->fetch_assoc()) {
$key[] = $row;
}
return $key;