我是编码的初学者,需要一些帮助。我有一个代码,根据MySQL表格中的特定值显示图像,如下所示:
//Show last 10 added by ID
$sql = "(SELECT * FROM food_tbl ORDER BY food_id DESC LIMIT 10) ORDER BY food_id ASC;";
$result = $conn->query($sql);
$pathImg = "/images/";
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$pathFile = $pathImg . $row['food_name'] . ".jpg";
echo '<img src="' . $pathFile . '">';
}
}
这输出,例如,banana.jpg ......事情是......我希望在文件实际不存在时显示标准图像,如果我没有名为banana的文件在我的“/ images /”目录中,它会显示一个unknownfood.jpg文件(当然,它确实会在该目录中)。
现在,问题就在这里,我已经找到了一些东西:--- Display specific image depending on specific text in MySQL table using PHP
......我最终尝试了这个:
while($row = $result->fetch_assoc()) {
$pathFile = $pathImg . $row['food_name'] . ".jpg";
if (file_exists($pathFile)) {
echo '<img src="' . $pathFile . '">';
} else {
$pathFile = $pathImg . "unknownfood.jpg";
echo '<img src="' . $pathFile . '">';
}
}
现在,这样做会完全忽略实际存在的文件。例如,如果我尝试显示banana.jpg,它将改为显示unknownfood.jpg。
我很确定这是一件非常简单的事情,我搞砸了,或者我没有按照预期的方式使用它。谢谢你的帮助!
答案 0 :(得分:1)
当您使用PHP时,使用file_exists($pathFile)
是服务器上相对于文档根目录(可能是/public_html/youruser
)的路径,而HTML是从基础文件夹中读取的(在域外,/
)。
这意味着您的代码必须看起来像这样
if (file_exists($_SERVER['DOCUMENT_ROOT'].$pathFile))
答案 1 :(得分:0)
file_exists
将检查文件系统路径,例如/home/www/images/banana.jpg
。
当您显示img
标记时,它会从文档根目录domain.com/images/banana.jpg
中提取图像。
找到正确的文件系统路径并将其传递给file_exists
,它将返回正确的答案。
现在它将始终返回false,因此您将最终进入else
子句的if
部分。