PHP如何将数据库URL赋值给变量并在页面底部调用展示?
解决PHP中从PDO结果获取图片URL并展示的问题
你遇到的核心问题是**fetchALL()返回的是包含多行数据的二维数组**,但你直接用$result['img_url']去访问单个字段——这显然行不通,因为$result里的每个元素才是单条记录的关联数组。另外页面底部的<a>标签用法也有误,<a>没有src属性,要展示图片得用<img>标签。
下面是具体的修正方案:
1. 调整数据获取方式
如果id_img = '3'对应的记录是唯一的,推荐用fetch()替代fetchALL(),这样直接得到单条记录的关联数组,就能正确拿到img_url:
$result = $query->fetch(PDO::FETCH_ASSOC); // 替换fetchALL为fetch $image = $result['img_url'];
如果确实需要获取多条记录,那要从数组的第一个元素里取img_url:
$result = $query->fetchALL(PDO::FETCH_ASSOC); $image = $result[0]['img_url']; // 取第一条记录的img_url
2. 修正页面底部的图片展示代码
<a>标签没有src属性,如果你想展示图片,直接用<img>标签;如果需要给图片加跳转链接,就用<a>包裹<img>:
<body> <!-- 直接展示图片 --> <img src='<?php echo $image; ?>' border='0' alt="商品图片"> <!-- 给图片加跳转链接 --> <a href="你的目标链接"> <img src='<?php echo $image; ?>' border='0' alt="商品图片"> </a> </body>
完整修正后的代码
<?php try{ include("dbconnectie.php"); $query = $db->prepare("SELECT * FROM shop WHERE id_img = '3'"); $query->execute(); // 改用fetch获取单条记录 $result = $query->fetch(PDO::FETCH_ASSOC); $image = $result['img_url']; echo "<table>"; // 单条记录无需循环,直接输出 echo "<tr>"; echo "<td>" . $result["brand"] . "</td>"; echo "<td>" . $result["model"] . "</td>"; echo "<td>" . $result["cond"] . "</td>"; echo "<td>" . $result["price"] . "</td>"; echo '<td><img src="data:image/png;base64,'.base64_encode( $result["image"] ).'"/></td>'; // 将图片放入td,保证表格结构合规 echo "</tr>"; echo "</table>"; } catch(PDOException $e) { die("Error!: " . $e->getMessage()); } ?> <html> <body> <img src='<?php echo $image; ?>' border='0' alt="商品图片"> </body> </html>
额外提个小细节:原来的代码里把<img>直接放在<tr>中,没有包裹在<td>里,这会破坏表格的结构,修正后把图片放到了<td>内,让HTML结构更规范。
内容的提问来源于stack exchange,提问作者Arjen
相关产品推荐
相关产品推荐

