我有一个表格,需要附加图像文件并将其上传到数据库,并且能够将其插入数据库。但是,我无法从数据库中检索图像以显示它。如何从数据库获取图像并显示?
form2.php:
<form action="insert2.php" method="GET" enctype="multipart/form-data">
<div class="container">
<div class="row">
<h2>3. Description of Item(s) </h2>
</div>
<div class="col-xs-12">
<div class="styled-input wide">
<textarea name="description" required /></textarea>
</div>
// this is the file attachment where it allows to select file from computer.
<div>
<label>Attachment:</label><input type='file' name='img' ><br>
</div>
</div>
</form>
insert2.php:
$con= mysqli_connect('127.0.0.1','root','');
if(!$con)
{
echo 'Not Connected To Server';
}
if(!mysqli_select_db($con,'satsform1'))
{
echo 'Database Not Selected';
}
$description = $_GET['description'];
$image = $_GET['img'];
//insert image to database.
$sql = "INSERT INTO handover (description,image)
VALUES ('$description','$image')";
if(!mysqli_query($con,$sql))
{
echo 'Not Submitted';
}
else
{
echo 'Submitted';
}
header("refresh:2; url=selection.php")
?>
fetch3.php:
<?php
$connect = mysqli_connect('127.0.0.1','root','', 'satsform1');
$output = '';
if(isset($_POST["query"]))
{
$search = mysqli_real_escape_string($connect, $_POST["query"]);
$query = "
SELECT * FROM handover
WHERE name LIKE '%".$search."%'
OR staffno LIKE '%".$search."%'
OR date LIKE '%".$search."%'
OR email LIKE '%".$search."%'
";
}
else
{
$query = "
SELECT * FROM handover ORDER BY ID
";
}
$result = mysqli_query($connect, $query);
if(mysqli_num_rows($result) > 0)
{
$output .= '
<div class="table-responsive">
<table class="table table bordered">
<tr>
<th>ID</th>
<th>Image</th>
</tr>
';
while($row = mysqli_fetch_array($result))
{
$output .= '
<tr>
<td>'.$row["ID"].'</td>
<td><img src="'.$row["img"].'"></td>
</tr>
';
}
echo $output;
}
else
{
echo 'Data Not Found';
}
?>
我希望该图像能够从表单上载的数据库中检索出来,并在网页中显示该图像。
答案 0 :(得分:0)
以下是您可以使用的示例脚本:
<?php
$con= mysqli_connect('127.0.0.1','root','');
$query = "SELECT * FROM handover ORDER BY ID";
$stmt = $con->prepare($query);
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
while($obj = $result->fetch_object()) {
echo($obj->ID.": <img src='".$obj->image."' alt='IMG-".$obj->ID."' height='150' width='150'><br>");
echo($obj->description);
}
?>
将此代码绑定到您的form2.php
或media.php
中应该可以使用。如果您想要这段代码中的其他内容,请随时对其进行编辑。
答案 1 :(得分:0)
好吧,看来您对图像的工作方式感到困惑。
首先,在您提供的方法中,实际上并没有存储请求中的图像。当您将图像上载到服务器时,它将不在$ _GET全局中,因为图像上载不同于$ _GET参数。 GET参数是网址中的字符串参数,例如google.co.uk?example_get=获取
第二,您实际上并不希望将图像作为BLOB存储在数据库中,而是希望将图像存储在文件系统中。存储图像后,应在数据库中保存该图像的相对文件路径。
最后,要将图像返回给用户,您应该获取文件路径并将其解析为URL,然后将其返回并放入img标签的src属性。
有关示例的更深入教程,请遵循以下链接的前提:
https://makitweb.com/upload-and-store-an-image-in-the-database-with-php/