我对 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'
您的查询将联接product_image.giftID='products.giftID'
中的product_image
表。
我假设您要匹配products
表中的数字 ID 而不是文字字符串。
我建议从'products.giftID'
中删除引号:
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
@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 单引号内加上双引号。