使用 PDO 返回数组 - 使用 FetchAll 不起作用

Sta*_*tan 1 php sql pdo fetchall fetch

我使用以下代码从数据库中检索数据。问题是它只显示第一行。在这种特殊情况下,这意味着网页上仅显示第一张图片,但我想显示所有图片。

<?php 
    $sql = "SELECT `image-id`, `article-id`, `image-path`, `image-title` FROM `table-images` WHERE `article-id` = :id";

    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(":id", $id);
    $stmt->execute();

    if($result = $stmt->fetch(PDO::FETCH_ASSOC))
    {
?>

<a class="swipebox" href="<?php echo $result['image-path'];?>" title="<?php echo $result['image-title'];?>">
<img alt="image" src="<?php echo $result['image-path'];?>"></a>

<?php
    }// end if
    else {
    echo '0 results';
    }// end else
?>
Run Code Online (Sandbox Code Playgroud)

我读了这篇文章,所以我尝试使用代码:

if($result = $stmt->fetchAll(PDO::FETCH_ASSOC));?

...但这行不通。它甚至不再呼应第一张图片。我在这里缺少什么?

med*_*eda 5

下面是它的工作原理:

$stmt = $pdo->prepare($sql);
$stmt->bindParam(":id", $id);
$success = $stmt->execute();

if($success){
    //fetch here
}
Run Code Online (Sandbox Code Playgroud)

现在您有 2 个获取数据的选项:

拿来()

fetch()将逐行获取,因此您需要一个 while 循环。

while($rows = $stmt->fetch(PDO::FETCH_ASSOC)){
 // get data
}
Run Code Online (Sandbox Code Playgroud)

获取全部()

fetchAll()一次获取所有行,因此不需要循环来检索数据,但如果需要循环,则需要一个 for 循环。

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){
  //do something
}
Run Code Online (Sandbox Code Playgroud)