我试图从数据库中显示图像,
数据库中的路径
require_once "Connection.php";
class DisplayDataImageProfile {
function showImageProfile(){
$connection = new Connection();
$conn = $connection->getConnection();
$id = $_GET['id'];
try{
$sqlDisplay = "SELECT photo FROM frofile WHERE id =$id";
$getImage = $conn->prepare($sqlDisplay);
$getImage->execute();
$getImage->fetchAll(PDO::FETCH_ASSOC);
foreach($getImage as $data){
header('Content-type: image/jpg');
// echo "<img src='$data'>";
echo $data;
}
}catch (PDOException $e){
echo "Error : " + $e->getMessage();
}
}}
之后我在html页面中调用如下:
<img src="DisplayDataImageProfile .php?id=3" align="center" />
我遇到的问题是图像无法使用路径从数据库中检索。 在网页上的其他情况下,图像显示出破碎的图像。
目前我只显示一张图片。
答案 0 :(得分:1)
你应该使用正确的方法。
而不是返回嵌套数组的fetchAll(),你必须使用fetchColumn()返回单个值。你应该正确使用准备好的陈述:
$sql = "SELECT photo FROM frofile WHERE id = ?";
$getImage = $conn->prepare($sqlDisplay);
$getImage->execute([$_GET['id']]);
header('Content-type: image/jpg');
echo $getImage->fetchColumn();
编辑:如果您在数据库中没有图像本身但只有图像的路径,则根本不需要此代码。摆脱Display.php,只需在回显的脚本中选择路径
<img src="Display.php?id=3" align="center" />
并回显所选路径,而不是Display.php?id=3
。
答案 1 :(得分:0)
您需要将$data
用作:
$data['photo']
而不仅仅是
$data
因为$getImage
由关联数组组成,所以你不能像你的例子那样使用,你需要使用索引来打印数据。