stored an image as a blob in MYSQL but now im having trouble displaying it in PHP
one text
Ello, so Ive inserted the jpeg via PHP into mySQL database and the image is showing as having been stored so I'm pretty sure its not a insertion issue, but I'm not sure how I retrieve it or decode it now as its just showing up as a '[?]' box on the frontend.
I'm sure it has to do with the way im pulling it, but the articles I've looked up are showing it done this way, however I'm pulling it a little bit differently I guess as I'm binding it to a parameter instead of pulling it via array ($row['column_name']) ?
Any help would be appreciated on understanding this. Also I've seen it done a lot more with storing the file in a directory, but storing the path in the database, is this a more efficient method? If I'm deleting a post I want the image associated with it to be gone as well so I figured this was a more efficient method?
insert
$imgname = $_FILES['file_']['name'];
$file = addslashes(file_get_contents($_FILES['file_']['tmp_name']));
$imageProperties = getimageSize($_FILES['file_']['tmp_name']);
$newtop = $con->prepare("INSERT INTO topics (topic_section, topic_subject, topic_img, topic_nameop, topic_comment, topic_imgname)
VALUES (?, ?, ?, ?, ?, ?)");
$section = 14;
$newtop->bind_param("ssssss", $section, $subject, $file, $user, $comment, $imgname);
$newtop->execute();
$topicid = $newtop->insert_id;
$postinit = 1;
$logpost = $con->prepare("INSERT INTO posts (post_img, post_comment, topic_id, post_nameop, post_init, post_section, post_imgname)
VALUES (?, ?, ?, ?, ?, ?, ?)");
$logpost->bind_param("sssssss", $file, $comment, $topicid, $user, $postinit, $section, $imgname);
$logpost->execute();
Retrieval
$tquery = $con->prepare("SELECT * FROM topics");
$tquery->execute();
$tquery->store_result();
if($tquery->num_rows){
$tquery->bind_result($tid, $tsection, $tsubject, $timg,
$tdate, $tname, $tcomment, $timgname);
while($tquery->fetch()){
echo "<div style='float:left'>
<h1>".$tsubject."</h1><br>
<img src='data:image/jpg;charset=utf8;base64,".base64_encode($timg)."'>
</div>";
}
echo "<div style='clear:both'></div>";
}
Source