如果数据库中没有特定图像,如何显示默认图像?

时间:2015-04-18 09:13:23

标签: php mysql

如果该图像在数据库中不可用,如何显示特定图像?我有

  1. 数据库名称:project
  2. 表名:image
  3. fields:id(int),file(varchar)[image url stored here],name(varchar)[image description]
  4. 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>
    

5 个答案:

答案 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%的相关性,但在需要使用多个数据库连接时可以提供帮助。

  1. 创建一个dbconnect.php文件//根据需要命名
  2. 将代码插入dbconnect.php文件:
  3. <? php $con=mysql_connect("localhost","root","") or die ("no connection"); mysql_select_db("project")or die("no database exit");?>

    1. 在您尝试使用数据库的任何文件中使用include_once 'dbconnect.php'

答案 4 :(得分:1)

如果数据库中的文件引用指向可能已删除的文件,则必须检查该文件是否仍然存在。理想情况下,当删除文件时,数据库中的引用也应该更新,以避免此类问题,但这可能并不总是可行,尤其是当许多人可以访问FTP时。

检查文件是否存在:

if(file_exists($yourImage)){
echo $yourImage;
}
else{
echo $defaultImage;
}