2011-11-18 234 views
-2

-------編輯-------
嗨,大家好,看到你爲我解決了這個問題,我認爲這將是一個好主意,再次解決同樣的問題,但在不同的頁面。我無法看到圖像。爲什麼我的圖像不顯示?

<?php 
$id = $_GET['product_id']; 
$query = mysql_query("SELECT * FROM products WHERE serial = '$id'") 
or die(mysql_error()); 

while($info = mysql_fetch_array($query)) { 
echo ""; 

$name = $info['name']; 
$description = $info['description']; 
$price = $info['price']; 
$picture = $info['picture']; 

} 
?> 

<form action="editsuccess.php?product_id=<?php echo $id; ?>" method="post"> 

Product ID:<br/> 
<input type="text" value="<?php echo $id;?>" name="product_id" disabled/> 

<br/> 

Name:<br/> 
<input type="text" value="<?php echo $name;?>" name="name"/> 

<br/> 

Description:<br/> 
<input type="text" value="<?php echo $description;?>" name="description"/> 

<br/> 

Price:<br/> 
<input type="text" value="<?php echo $price;?>" name="price"/> 

<br/> 

Picture:<br/> 
<? echo'<img src="../getImage.php?id=' . $info['serial'] .'"/>'?> 

</br> 

<input type="submit" value="Update Product"/> 

</form> 

這是一個頁面,管理員可以從一個表中的一行編輯產品。 由於某種原因,圖像沒有顯示出來。

感謝您的任何建議。

------編輯在這裏結束--------

我還是不能讓我的PHP圖像即使在之後的圖像上傳到數據庫中正確的方法後纔會顯示。下面的代碼是用於顯示圖像:

<form name="form1"> 
    <input type="hidden" name="productid" /> 
    <input type="hidden" name="command" /> 
</form> 

    <table border="0" cellpadding="2px" width="600px"> 
     <? 
      $result=mysql_query("select * from products"); 
      while($row=mysql_fetch_array($result)){ 

     ?> 
     <tr> 
      <td><?php '<img src="getImage.php?id=' . $row['serial'] .'"/>' 
?> 

      </td> 
      <td> <b><a href="products.php?product_id=<?=$row['serial']?>"><?=$row['name']?></a></b><br /> 
        <?=$row['description']?><br /> 
        Price:<big style="color:green"> 
         £<?=$row['price']?></big><br /><br /> 
        <input type="button" value="Add to Cart" onclick="addtocart(<?=$row['serial']?>)" /> 
      </td> 
     </tr> 
     <tr><td colspan="2"><hr size="1" /></td> 
     <? } ?> 
    </table> 

getImage.php看起來是這樣的:

... 
$link = mysql_connect($host, $user, $passwd); 
mysql_select_db($dbName); 
$query = 'SELECT picture FROM products WHERE serial="' . $_GET['id'] . '"'; 
$result = mysql_query($query,$link); 
$row = mysql_fetch_assoc($result); 
echo $row['picture']; 
?> 

只有名稱,描述和價格顯示在網頁上了。我的MySQL表看起來像這樣:

  • 串行
  • 描述
  • 價格
  • 圖片(BLOB)
+1

是作爲Blob存儲的圖像?還應該在輸出圖像時設置標題,另外您應該修復sql注入。 –

+0

是的,它被存儲爲一個blob ...你是什麼意思設置標題? – Jahed

回答

3

你是不是呼應了之前設置正確Content-type頭圖像數據。

您還必須跳過$_GET['id']參數。

// Escape $id 
$id = mysql_real_escape_string($_GET['id']); 

$link = mysql_connect($host, $user, $passwd); 
mysql_select_db($dbName); 

// Use the escaped $id 
$query = "SELECT picture FROM products WHERE serial='$id'"; 
$result = mysql_query($query,$link); 

if ($result) { 
    $row = mysql_fetch_assoc($result); 

    // Set the Content-type 
    // This assumes image/jpeg. If you have different image types, 
    // you'll need logic to supply the correct MIME type 
    // image/jpeg image/png image/gif, etc 
    header("Content-type: image/jpeg"); 
    echo $row['picture']; 
} 
?> 

在主腳本,它看起來像你只是缺少一個echo

 <td><?php '<img src="getImage.php?id=' . $row['serial'] .'"/>' 
     // Should be 
     <td><?php echo '<img src="getImage.php?id=' . $row['serial'] .'"/>' 
     // ------^^^^^^ 
+0

嗨,我現在getImage.php頁面上說錯誤:圖片「http://www.*****.com/musics/getImage.php」無法顯示,因爲它包含錯誤。 – Jahed

+0

好吧,看起來你沒有提供'id'。瀏覽到'http://www.yourdomain.com/musics/getImage.php?id = somevalidid' –

+3

這將表明1)沒有爲您的查詢返回記錄,2)表中的數據已損壞,3)您爲該圖像設置了錯誤的內容類型標題,或者4)您的腳本正在輸出文本以及圖像的數據,從而導致瀏覽器認爲圖像已損壞。 – Crontab