PHP代码从数据库返回图像

时间:2016-01-21 20:12:07

标签: php mysql image

我对php很新,我在尝试从我的数据库中正确填充图像时遇到了一些麻烦。任何帮助,将不胜感激。

以下是我目前的代码。它目前正在返回我的默认图像,而不是我的产品图像,如果在数据库中。

<?php

$query = "SELECT products.giftID, products.gift_name, products.price, products.short_description, product_image.picture FROM products LEFT JOIN product_image ON product_image.giftID='products.giftID' AND products.vendorID='1'";                                 
$result = mysql_query($query) or die ("Database access failed:".mysql_error());

while($row = mysql_fetch_assoc($result)) {
    if($row['picture'] == '') {
        echo "<img src=product_img/image_coming_soon.jpg>";
    } else {
        echo "<img src='".$row['picture'] ."'>";
    }                                       
}
?>  

格式化查询以提高可读性:

SELECT products.giftID, products.gift_name, products.price,
       products.short_description, 
       product_image.picture
  FROM products
  LEFT JOIN product_image ON product_image.giftID='products.giftID'
                         AND products.vendorID='1'

2 个答案:

答案 0 :(得分:1)

您的查询加入了textproduct_image 我假设您要匹配product_image.giftID='products.giftID'表中的数字ID而不是文字字符串。

我建议从products删除引号:

'products.giftID'

答案 1 :(得分:0)

@showdev没错。 (我做了这个回答社区维基,以免偷走他的功劳。)

LEFT JOIN product_image   ON product_image.giftID='products.giftID' /*wrong*/
                         AND products.vendorID='1'

不好,因为它会查找product_image行,giftID列等于文本字符串'products.giftID'。你想要这个,第一行没有单引号。

LEFT JOIN product_image   ON product_image.giftID=products.giftID
                         AND products.vendorID='1'

同时

您的HTML代码生成不正确。你得到了

<img src=product_img/image_coming_soon.jpg>  <!-- wrong -->

<img ...>代码中的属性值必须用双引号包围。 (有些浏览器,不小心,接受其他标点符号。)你想在你的html中使用这样的东西:

<img src="product_img/image_coming_soon.jpg">

所以,你需要

{echo '<img src="product_img/image_coming_soon.jpg">';}
else {echo '<img src="' . $row['picture'] . '">';} 

你可以在php单引号中加双引号。