2016-03-07 102 views
0

我試圖從數據庫顯示圖像,腓 - 使用路徑從數據庫顯示圖像(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" /> 

我有問題,圖像無法從數據庫使用路徑檢索。 其他案例在網頁上的圖像像顯示的碎片圖像。

目前我只顯示一個圖像。

+0

你想在列表中顯示單個圖像或圖像嗎? – Deep

+4

使用'$ data ['photo']'而不是'$ data' – devpro

+0

@devpro發佈那個答案;) – Matt

回答

0

您需要使用$data爲:

$data['photo'] 

,而不是僅僅

$data 

因爲$getImage包括關聯數組,所以你可以不喜歡你的榜樣使用,你需要使用索引打印數據。

+0

現在它給了我破碎的形象。在網頁上顯示圖像,但破碎的圖像。 – red

+0

@red:檢查URL查看源文件 – devpro

+0

這樣的事情:'localhost:49185/insertData/AdminPage.php' 圖像將被顯示 – red

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

+0

現在它給了我破碎的形象。在網頁上顯示圖像,但破碎的圖像。 – red

+0

我爲我的代碼添加了標題。很明顯,您必須在數據庫中正確存儲圖像。 –

+0

在我的數據庫中我只是存儲圖像路徑,並在文件夾中的圖像 仍然給我破碎的圖像。 – red