mysqli数组获取没有获取数据

时间:2017-08-24 07:34:34

标签: php mysql mysqli

我必须在单行中获取结果,但我不能运行多行。我怎样才能解决这个问题?

$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"}

2 个答案:

答案 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