为什么我的图像不显示?

时间:2011-11-18 19:26:35

标签: php mysql

------- ------- EDIT
嗨伙计们,看到你为我解决了这个问题,我认为再次解决同样的问题是一个好主意,但在不同的页面上。我无法让图像显示出来。

    <?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表看起来像这样:

  • 串行
  • 名称
  • 描述
  • picture(blob)

1 个答案:

答案 0 :(得分: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'] .'"/>'
        // ------^^^^^^