2013-07-21 164 views
2

所以我試圖從一個數據庫中顯示一個網站,我正在爲一個朋友建立圖像。他希望能夠上傳圖像,並將其顯示在首頁上。PHP從數據庫中顯示圖像

我有圖像上傳所有工作。將它作爲BLOB保存在數據庫中。

我開始着手在單獨的文件上顯示圖像。我在我的測試網站上工作,圖像顯示他想要如何。但是隨後我將代碼移到了實際的網站上,並將其轉移到了需要的地方,並且不起作用。

我結束了在我的測試網站上再次嘗試,並且它一切正常。

對於一些人來說,它並不適用於實際的網站,但它在我的測試網站上運行良好。

實際的網站抓住了我的測試網站的更多信息。

這是我在測試網站上使用的代碼。

image.php

$query = mysql_query("SELECT * FROM images LIMIT 1"); 
while($row = mysql_fetch_assoc($query)){ 

    $image_id = $row['id']; 
    echo "<img src=showimage.php?id=".$image_id.">"; 
} 

這裏是我如何抓住從數據庫中的圖像,並顯示它。

showimage.php

include 'inc/db.php'; 

$id = addslashes($_REQUEST['id']); 

$image = mysql_query("SELECT image FROM sites WHERE id = '$id'"); 
$image = mysql_fetch_assoc($image); 
$image = $image['image']; 

header("Content-type: image/png"); 

echo $image; 

使用的測試代碼的網站上工作得很好,沒有任何問題存在。

這是我的實際網站代碼。

sites.php

$select = mysql_query("SELECT * FROM sites"); 
      while($row = mysql_fetch_assoc($select)){ 

       $image_id = $row['id']; 

       echo ' 
        <tr class="bottom"><td>'.$row['host'].'</td> 
        <td>'.$row['currency'].''.$row['price'].' every '.$row['payment'].'</td> 
        <td>'.$row['domain'].'</td> 
        <td>'.$row['paid_currency'].''.$row['paid_domain'].'</td> 
        <td>'.$row['features'].'</td> 
        <td> 
         <span title="Edit '.$row['id'].'"><a href="edit.php?id='.$row['id'].'"><img src="images/edit.png" alt="Edit"></a></span> 
         <span title="Delete '.$row['id'].'"><a href="inc/delete.php?id='.$row['id'].'"><img src="images/delete.png" alt="Delete"></a></span> 
        </td> 
        <td><img src=showimage.php?id='.$image_id.'></td></tr> 
        '; 
      } 

,使用showimage.php文件抓住從數據庫中的圖像,但不工作。

+7

你爲什麼不乾脆將圖像保存爲獨立的文件,並將其存儲在數據庫路徑,那麼它可以是在src中使用? – Virus721

+2

有可能是showimage.php中的一些警告信息或類似內容正在破壞圖像。如果您刪除內容類型標題,您會在真實網站上看到哪些輸出? – Joni

+1

如何將'image'保存到'sites'表中? – 2013-07-21 11:30:33

回答

1

如果您已經開始使用數據庫,請使用imagecreatefrompng()函數進行調查,具體取決於img如何放入數據庫。

此外,代替addslashes(),請嘗試執行$id = (int)$_GET['id'];,然後檢查是否$id > 0。最後,+1在文件系統上存儲圖像,而不是BLOB。

[這裏並插入的mysql_query-被棄用使用最PDO擴展講座]