2011-04-22 78 views
1

我試圖顯示使用PHP和MySql數據庫的多個圖像,即使使用while循環我沒有得到所有的圖像,我只得到一個,我的意思是表中的第一個。有什麼問題 ?如何使用php顯示多個圖像(斑點)從MySQL?

我使用的是表ID_IMAGE (int, pk, auto increment)myImage (blob)

$query = mysql_query("SELECT myImage FROM image"); 
while($data=mysql_fetch_array($query)) { 
    header('Content-type: image/jpg'); 
    echo $data['myImage']; 
} 
+2

你必須首先學習HTML,朋友 – 2011-04-22 09:52:54

回答

12

一種可能的方式來解決這個問題的方法是有一個單獨的腳本動態輸出的圖像例如的內容。 :

image.php

header('Content-type: image/jpg'); 

// DataBase query and processing here... 

echo $data['myImage']; 

,並調用它,只要你需要顯示存儲在你的數據庫如圖片。你的循環中:

echo '<img src="image.php?id=' . $data['id'] . '">'; 

但在數據庫中存儲的圖像將您的服務器上的收費,除非他們真的很小,或者你有一個很好的理由這樣做,你應該只將其物理位置存儲在磁盤上。

如果您希望隱藏用戶的圖像位置或控制訪問權限,也可以使用此方法,但是對於該情況有更好更快的替代方法。

1

僅舉在HTML中通過編碼它們直接嵌入圖像的可能性,你可以這樣做:

$query = "SELECT myImage FROM image"; 
if ($result = mysqli_query($link, $query)) { 
    while ($row = mysqli_fetch_assoc($result)) { 
     echo '<img src="data:image/jpg;base64,' . base64_encode($row['myImage']) . '">'; 
    } 
} 

臨:

  • 的瀏覽器並不需要通過加載圖片一個額外的網絡連接
  • 您可以在一個請求中查詢並顯示多個圖像

缺點:

  • 如果圖像(S)的大和/或會有很多圖片,網頁會加載緩慢
  • 編碼爲base64圖像將使它更大約30%。

有關基地編碼圖像的詳細信息: