如果该图像在数据库中不可用,如何显示特定图像?我有
PHP代码在这里:
<?php
$con=mysql_connect("localhost","root","") or die("no connection ");
mysql_select_db("project")or die("no database exit");
echo "<h2 align='center'>Displaying image from database</h2>";
$res=mysql_query("SELECT * FROM image");
echo "<table>";
while ($row=mysql_fetch_array($res)) {
echo "<tr>";
echo "<td>";echo $row["id"];echo "</td>";
echo "<td>"; ?> <img src="<?php echo $row["file"]; ?>" height="100px" width="150px"> <?php echo "</td>";
echo "<td>"; echo $row["name"]; echo "</td>";
echo "</tr>";
}
?>
</table>
答案 0 :(得分:4)
使用简单的if条件
<img src="<? php if($row["file"]){ echo $row["file"] ; } else{// other image name}?>" height="100px" width="150px">
答案 1 :(得分:4)
只需使用@getimagesize
说明w3school php.net此方法将检查图片是否确实存在。如果图像从db或目的地删除,则返回false。
<?
$img="image url"; //orginal image url from db
if(!@getimagesize($img))
{
$img="default image" //if image not found this will display
}
?>
更新
代码使用就像这样
<?php
$con=mysql_connect("localhost","root","") or die("no connection ");
mysql_select_db("project")or die("no database exit");
echo "<h2 align='center'>Displaying image from database</h2>";
$res=mysql_query("SELECT * FROM image");
echo "<table>";
while ($row=mysql_fetch_array($res)) {
$img=$row["file"]; //orginal image url from db
if(!@getimagesize($img))
{
$img="default image" //if image not found this will display
}
echo "<tr>";
echo "<td>";echo $row["id"];echo "</td>";
echo "<td>"; ?> <img src="<?php echo $img; ?>" height="100px" width="150px"> <?php echo "</td>";
echo "<td>"; echo $row["name"]; echo "</td>";
echo "</tr>";
}
?>
</table>
答案 2 :(得分:2)
您可以使用三元运算符执行此操作,请参阅下面的内容并尝试
<?php
$con=mysql_connect("localhost","root","") or die("no connection ");
mysql_select_db("project")or die("no database exit");
echo "<h2 align='center'>Displaying image from database</h2>";
$res=mysql_query("SELECT * FROM image");
echo "<table>";
while ($row=mysql_fetch_array($res)) {
// USE TERNARY OPERATOR HERE
$imagePath = (isset($row["file"]) && !empty($row["file"]) && file_exists($row["file"]))?$row["file"]:'img.default.jpg'; // REPLACE YOUR IMAGE PATHE HERE
echo "<tr>";
echo "<td>";echo $row["id"];echo "</td>";
echo "<td>"; ?> <img src="<?php echo $imagePath; ?>" height="100px" width="150px"> <?php echo "</td>";
echo "<td>"; echo $row["name"]; echo "</td>";
echo "</tr>";
}
?>
</table>
答案 3 :(得分:1)
您是否将目录存储在varchar中的图像中?如果是这样,尝试更改数据库以使用BLOB存储图像本身,如here
所述然后你可以使用if语句。
<img src="<? php if($row["file"]){echo $row["file"];} else { echo '/directory/to/image.jpg'}?>" height="100px" width="150px">
我还建议使用include,这可能与您当前的项目没有100%的相关性,但在需要使用多个数据库连接时可以提供帮助。
<? php $con=mysql_connect("localhost","root","") or die ("no connection"); mysql_select_db("project")or die("no database exit");?>
include_once 'dbconnect.php'
答案 4 :(得分:1)
如果数据库中的文件引用指向可能已删除的文件,则必须检查该文件是否仍然存在。理想情况下,当删除文件时,数据库中的引用也应该更新,以避免此类问题,但这可能并不总是可行,尤其是当许多人可以访问FTP时。
检查文件是否存在:
if(file_exists($yourImage)){
echo $yourImage;
}
else{
echo $defaultImage;
}