我对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'
答案 0 :(得分:1)
您的查询加入了text
表product_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单引号中加双引号。