我有查询MySQL数据库的PHP代码,并以对象数组的形式返回一些正确的信息。

但是,应该有多个结果,数据库中有几行与查询匹配。

我已经尝试过使用while循环,其中嵌套有一个foreach,但是我无法使其正常工作。

$stmt = $conn->prepare("SELECT * FROM planning WHERE intervenant = :id AND date = :date");
$result = $stmt->execute([':id' => $id, ':date' => $date]);

if ($stmt->rowCount() > 0) {
    $output = array();
    $output = $stmt->fetch(PDO::FETCH_ASSOC);
    echo json_encode($output);
} else {
    $errors = "No data found for this date";
    echo json_encode($errors);
}


WHILE LOOP THAT I TRIED TO USE WITHIN IF PART OF CODE ABOVE

while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
    foreach ($row as $key => $output) {
    echo json_encode($output);
}


因此,我希望代码返回几个数组,每个数组包含查询的数据。

使用有效的代码,我只返回了一个对象数组。

尝试while循环时,出现“未捕获的错误:在布尔值上调用成员函数fetch()”。

请任何帮助表示赞赏。

最佳答案

代替:

while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
    foreach ($row as $key => $output) {
    echo json_encode($output);
}


尝试:

$output = $result->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($output)

关于php - 如何从SQL请求接收多个结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56877089/

10-12 15:33