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));?
...但这行不通。它甚至不再呼应第一张图片。我在这里缺少什么?
下面是它的工作原理:
$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)