【问题标题】:Php - Display image from Database using path (PDO)Php - 使用路径(PDO)显示来自数据库的图像
【发布时间】:2016-03-07 15:18:33
【问题描述】:

我试图显示数据库中的图像,

  • 目录中的图片
  • 数据库路径

    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" />

我遇到了无法使用路径从数据库中检索图像的问题。 网页上的其他情况下显示的图像类似于损坏的图像。

目前我只显示一张图片。

【问题讨论】:

  • 您想在列表中显示单个图像还是图像?
  • 使用$data['photo'] 而不仅仅是$data
  • @devpro 将其发布为答案 ;)
  • @red 您的代码对 SQL 注入开放,您没有正确准备。
  • @Matt: 谢谢兄弟的建议,贴出来... :)

标签: php mysql pdo


【解决方案1】:

你应该使用正确的方法。

您必须使用返回单个值的 fetchColumn() 而不是返回嵌套数组的 fetchAll()。你应该正确地使用准备好的语句:

$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

【讨论】:

  • 现在它给了我破碎的形象。在网页上显示图像,但图像损坏。
  • 我在代码中添加了标题。显然,您必须在数据库中正确存储图像。
  • 在我的数据库中我只是存储图像路径,文件夹中的图像仍然给我损坏的图像。
  • 所以你根本不需要 Display.php 脚本!
  • 对不起,先生,我又一次提出问题,在我按照您的代码进行操作后,我收到 id 未定义的错误。我应该什么时候定义变量id
【解决方案2】:

你需要使用$data作为:

$data['photo']

而不仅仅是

$data

因为$getImage包含在关联数组上,所以不能像你的例子那样使用,你需要使用索引来打印数据。

【讨论】:

  • 现在它给了我破碎的形象。在网页上显示图像,但图像损坏。
  • @red:查看源代码中的 url
  • 类似这样的:localhost:49185/insertData/AdminPage.php 将显示图像的位置
  • @red: print_r($getImage);的结果是什么
  • 仍然损坏图像先生。
猜你喜欢
  • 1970-01-01
  • 2019-07-05
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
相关资源
最近更新 更多