我必须在单行中获取结果,但我不能运行多行。我怎样才能解决这个问题?
$stmt = $this->conn->prepare("SELECT * from user where id=?");
$stmt->bind_param("s", $id);
if($stmt->execute()){
$result = $stmt->get_result()->fetch_array(MYSQLI_ASSOC);
$stmt->close();
return $result;
}
我的结果就像明智一样
{"ID":2,"Name":"Anju"}
但我需要获得所有用户结果。我的代码在这里
$stmt = $this->conn->prepare("SELECT * from user where id=?");
$stmt->bind_param("s", $id);
if($stmt->execute()){
$result = array();
while ($row = $stmt->get_result()->fetch_array(MYSQLI_ASSOC)) {
$result[] = $row;
}
$stmt->close();
return $result;
}
我收到了错误
致命错误:在第5行的非对象上调用成员函数fetch_array()
该行是:
while ($row = $stmt->get_result()->fetch_array(MYSQLI_ASSOC))
我期待的结果是
{"ID":1,"Name":"Obi"}, {"ID":3,"Name":"Oman"}, {"ID":4,"Name":"Anju"}
答案 0 :(得分:0)
$stmt = $this->conn->prepare("SELECT * from user where id=?");
$stmt->bindValue(1, $id);
试试这种方式
尝试fetchAll而不是fetch_array
答案 1 :(得分:0)
您可以进行以下更正。
更改
$rows->fetch_assoc(MYSQLI_ASSOC)
到
$rows->fetch_assoc()
应该看起来像
if ($stmt->execute()) {
$rows = $stmt->get_result();
$result = array();
while ($row = $rows->fetch_assoc()){
$result[] = $row;
}
$stmt->close();
return $result;
} else {
return NULL;
}
建议:始终指定SELECT
中的列列表,以便更快地执行查询。
请阅读 php manual