我使用以下代码从我的数据库中检索数据。问题是它只显示第一行。在这种特殊情况下,这意味着网页上只显示第一张图片,但我想要显示所有图片。
<?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
?>
我读了 this article ,所以我尝试使用代码:
if($result = $stmt->fetchAll(PDO::FETCH_ASSOC));?
......但这不起作用。它甚至不再回应第一张照片了。我在这里缺少什么?
答案 0 :(得分: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()强>
fetchAll()
一次获取所有行,因此无需循环来检索数据,但如果需要循环则需要for循环。
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){
//do something
}
答案 1 :(得分: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';
}