基本上,这里的整体思想是更改个人资料图片,并将其上传到数据库中。
我想在数据库仍然为空时首先显示默认图标,但是我的代码仅显示损坏的图像缩略图。可能出了什么问题?
<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>
答案 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代码,如果您对它们进行了正确的编码,问题显然就是我所提到的。