1

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

<?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
?>

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

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

...但这不起作用。它甚至不再呼应第一张照片。我在这里想念什么?

4

2 回答 2

2

下面是它的工作原理:

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

if($success){
    //fetch here
}

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

拿来()

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

while($rows = $stmt->fetch(PDO::FETCH_ASSOC)){
 // get data
}

获取所有()

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

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){
  //do something
}
于 2014-06-29T05:14:57.903 回答
1
<?php 
    $sql = "Your SQL query";
    $id  = 1; 

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

    if($stmt->rowCount()){

       foreach($result as $row){
         echo $row['row_name'].'<br/>'; 
       }

    }else{
       echo 'No results found'; 
    }
于 2014-06-29T01:17:11.590 回答