Php - 使用路径(PDO)从数据库显示图像

时间:2016-03-07 06:22:15

标签: php mysql pdo

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

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

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

我遇到的问题是图像无法使用路径从数据库中检索。 在网页上的其他情况下,图像显示出破碎的图像。

目前我只显示一张图片。

2 个答案:

答案 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由关联数组组成,所以你不能像你的例子那样使用,你需要使用索引来打印数据。