gpt4 book ai didi

php 图像 blob 不会显示

转载 作者:行者123 更新时间:2023-11-29 12:51:38 25 4
gpt4 key购买 nike

所以我试图显示我的 mysql 数据库中的图像。图像保存为 blob 格式。我制作了单独的 php 文件来获取图像。然后,我从要显示图像的位置调用此文件,如下所示:

<img src="image.php?id=3" />

这是获取图像的文件:

<?php
require 'scripts/connect.php';

if(isset($_GET['id']))
{
$id = mysql_real_escape_string($_GET['id']);
$q = $db->prepare("SELECT image FROM products WHERE id = '$id'");
$q->execute();
$data = $q->fetch();

header("content-type: image/jpeg");
echo $data["image"];
}
?>

但是当我尝试运行此代码时,没有图像显示。相反,我得到了这个恼人的损坏链接图像:

http://i.imgur.com/NQOPSAf.png

最佳答案

您的代码没有达到您的预期。

尝试改变

$q = $db->prepare("SELECT image FROM products WHERE id = '$id'");

in - 如果 id 字段为数字 1;如果不是,请添加单引号 -

$q = $db->prepare("SELECT image FROM products WHERE id = $id");

您的示例不起作用,因为您传递给查询 $id 占位符而不是他的值(您没有连接它)

当然,用这种方法你不会被SQL Injection保存。根本没有,所以你应该这样使用 pepared 语句

$q = $db->prepare("SELECT image FROM products WHERE id = :id");
$q->execute(Array(":id" => $id));

编辑

正如OP告诉我的那样,$data['image'];是一个比特流,我建议使用类似的东西:

echo '<img src="data:image/jpg;base64,'. base64_encode($data['image']). '" alt='imagename'>;

或者如果您的 echo 直接进入 src 属性:

echo 'data:image/jpg;base64,'. base64_encode($data['image'])

关于php 图像 blob 不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24632118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com