当数据库仍然为空时,默认图像不会显示

时间:2018-09-21 08:39:01

标签: php mysql html5

基本上,这里的整体思想是更改个人资料图片,并将其上传到数据库中。

我想在数据库仍然为空时首先显示默认图标,但是我的代码仅显示损坏的图像缩略图。可能出了什么问题?

<form method="post" enctype="multipart/form-data">    
    <div class="row form-group">
        <div class="col col-md-3">
            <label for="text-input" class="form-control-label">Profile Picture</label>
        </div>
        <div class="col-9 col-md-9">
            <div class="input-group">
                <?php  
                    $query = "SELECT image FROM member WHERE member_id = '$ID'";  
                    $result = mysqli_query($con, $query);  
                    if(mysqli_num_rows($result)>0){
                        while($row = mysqli_fetch_array($result))  
                        {  
                            echo '<img src="data:image/jpeg;base64,'.base64_encode($row['image']).'">';  
                        }  
                    } else{
                        echo "<img src='images/icon.jpg' style='height:200px'draggable='false'>";
                    }
                ?> 
                <div class="col-12">
                    <input type="file" name="image" id="image" style ='margin-left:-10px;margin-top:5px'>
                </div>
                <div class="col-12">
                    <input type="submit" name="insert" id="insert" value="Change Profile Picture" class="btn btn-primary" style ='margin-left:-10px;margin-top:5px'> 
                </div>
                <?php   
                    if(isset($_POST["insert"])){  
                        $file = addslashes(file_get_contents($_FILES["image"]["tmp_name"]));  
                        $query = "UPDATE member SET image = '$file' WHERE member_id='$ID'";  
                        if(mysqli_query($con, $query)){ 
                            echo ("<script LANGUAGE='JavaScript'>
                                window.alert('Profile Picture has been successfully changed!');
                                window.location.href='edit.php';
                                </script>");
                        }  
                    }
                ?>  
            </div>
        </div>
    </div>
</form>

2 个答案:

答案 0 :(得分:1)

如果您的数据库为空,则上传查询将不起作用。如果图像行为空,则代码应类似于图像行不为空时显示图像,否则显示默认图像。

if(mysqli_num_rows($result)>0){
    while($row = mysqli_fetch_array($result)) { 
        if (isset($row['image']) && !empty($row['image'])) {
            echo '<img src="data:image/jpeg;base64,'.base64_encode($row['image']).'">';
        } else {
            echo "<img src='images/icon.jpg' style='height:200px'draggable='false'>";
        }                       
    } // endwhile
} else{
    echo "no result found";
}

答案 1 :(得分:0)

在PHP中编写HTML或CSS代码时,您应该在所有双引号之前加上\,并且需要将所有引号更改为双引号,如下所示:

          echo "<img src=\"images/icon.jpg\" style=\"height:200px;\" draggable=\"false\">";

我没有检查您的PHP代码,如果您对它们进行了正确的编码,问题显然就是我所提到的。