images from database via php can't display - php

thank's for help. I have problem displaying images retrieving from my database.
I cant see the image when loading image.php in img src or directly from the page. When i display the variable without header('Content-type: image/jpeg'); i can see all the code inside, as i put this line all goes off.
I have a table called TABLE with id, title, img stored as longblob directly uploaded inside phpmyadmin.
Can anyone help me?
index.php
<?php
session_start();
include "admin/include/connection2.php";
$data = new MysqlClass();
$data->connect();
$query_img ="SELECT * FROM table ORDER BY data ASC LIMIT 4";
$post_sql = $data->query($query_img);
if(mysql_num_rows($post_sql) > 0){
while($post_obj = $data->estrai($post_sql)){
$id = $post_obj->id;
$titolo = stripslashes($post_obj->title);
$data_articolo = $post_obj->data;
$immagine = $post_obj->img;
// visualizzazione dei dati
echo "<h2>".$titolo."</h2>";
echo "Autore <b>". $autore . "</b>";
echo "<br />";
echo '<'.'img src="image.php?id='.$post_sql['id'].'">';
echo $id;
echo "<hr>";
}
}else{
echo "no post aviable.";
}
// here is the image.php code
<?php
include "admin/include/connection2.php";
$data = new MysqlClass();
// connect
$data->connetti();
$id = $_GET['id'];
echo $id;
$query = mysql_query("SELECT * FROM articoli_news WHERE id='".$id."'"; //even tried to send id='1' but not working
echo $query;
$row = mysql_fetch_array($query);
echo $row['id']; //correct displaying
$content = base64_decode($query['img']);
header('Content-type: image/jpeg');
echo $content;
?>

Delete all "echo" commands except "echo $content;" because there are also appear in the output, and damage your image.
And use ob_start(); in the begining of the script, and check out your script file not contain any of whitespace characters before or after the php begint and close tags .

Related

why cant images appear when i try to call image src from different php file?

am trying to display images page A but calling them from page B. images are contained in the images folder and database table images
my page a code is
<img src="addimage.php?image_id=<?php echo $row["code"]; ?>" />
page B code is
<?php
require_once "db.php";
if(isset($_GET['image_id'])) {
$sql = "SELECT image FROM images WHERE code=" . $_GET['image_id'];
$result = mysqli_query($mysqli, $sql) " . mysqli_error($mysqli));
$row = mysqli_fetch_array($result);
echo $row["image"];
}
mysqli_close($mysqli);
?>

Image from blob object not displayed in a page

This is my HTML code for displaying image stored as blob object which is stored in a database.
<tr><td>photo</td><td><img src="image.php?id=<?php echo $employee['id']; ?>" /></td></tr>
This is the image.php file:
<?php
include db.php;
$employee_id = (isset($_GET['id']) && is_numeric($_GET['id'])) ? intval($_GET['id']) : 0;
try
{
$sql = "SELECT photo
FROM employee where id = $employee_id limit 1";
$s = $pdo->prepare($sql);
$s->execute();
}
catch (PDOException $e)
{
$error = 'Employee not found' . $e->getMessage();
include 'error.html.php';
exit();
}
$employee = $s->fetch();
$image = $employee['photo'];
header('Content-Type: image/jpeg');
echo $image;
?>
When I look at the HTML code in Firebug, I can see
<img src="image.php?id=9">
But no image is displayed in the table row. Do you know how to find out what is wrong?
When I open the page ...image.php?id=9 in Firefox
It shows a message
The image ...image.php?id=9 cannot be
displayed because it contains errors.
It is strange that every image I have contains an error. I inserted only images with
size smaller than the blob object.
do you get an error?
try to use "exit;" after the echo and remove the closing php tag.
it's optional and you don't really need it (http://php.net/manual/en/language.basic-syntax.instruction-separation.php).
header('Content-Type: image/jpeg');
echo $image;
exit;

Unable to get the image from mysql DB

I'm new to php. I have a sample mysql db in that I have a table named testdb with columns id(INT) and image(BLOB). I have uploaded an image into testdb. Uploaded successfully. The following is the php code. The variable $conn contains the connection details. I have a html page which redirects to this php page on submitting.
<?php
$name = $_FILES["sample"]["name"];
echo $name . "<br/>";
$tmp_name = $_FILES["sample"]["tmp_name"];
echo $tmp_name . "<br/>";
$size = $_FILES["sample"]["size"];
echo $size . "<br/>";
$contents = file_get_contents($tmp_name);
$htmlen = htmlentities($contents);
$cont = mysql_real_escape_string($contents);
$query = "INSERT INTO testdb(image)
VALUES ('$cont')";
$dbquery = mysql_query($query, $conn);
if($dbquery){
echo "successfully inserted";
}
else{
echo "could not inserted" . mysql_error();
}
?>
I am trying to get the image with the following code. But it is showing string characters rather than the image. As far as I know this should work fine.
<?php
$query = "SELECT image, id
FROM testdb ";
$dbquery=mysql_query($query , $conn);
if(! $dbquery){
echo "Could not selected the data from database. " . mysql_error();
}
while( $row = mysql_fetch_array($dbquery) ){
$decodeimg = html_entity_decode($row["image"]);
echo "<img src= $decodeimg/><br/> hellow orld <br/>";
}
?>
Could anyone help me with this. Thanks in advance.
Instead of storing the actual image in your database (which is redundant because it is probably stored on your server too); why don't you just store the PATH to the image as a string, query the string from your db and then append it to the 'src' attribute with php.
I am also got the same error when show the BLOB image from DB. I just use the decoding method for this problem....
$photo=$myrow['image'];
echo '<img src="data:image/jpeg;base64,' . base64_encode( $photo ) . '" width="150" height="150" />

Fetch blob image from table and display it using php sqlite3

I know this question has been asked many times but I couldnot solve this using any of them.
I am new to sqlite and cannot understand what I am doing wrong.
WHAT I AM TRYING
I am trying to make a profile view page. I am able to fetch all details from my sqlite database but i am not able to display my profile picture.
TABLE STRUCTURE
**username|landline|mobile|email|profilepicture**
john |xxxxxxxx|xxxxxx|x#x.x|blob
WHAT I TRIED
$sql = "SELECT * FROM profile";
$query = $db->query($sql);
while($row = $query->fetchArray(SQLITE3_ASSOC) ){
echo "NAME = ". $row['user_name'] . "<br/>";
echo "LANDLINE = ". $row['user_landline'] ."<br/>";
echo "MOBILE = ". $row['user_mobile'] ."<br/>";
echo "EMAIL = ".$row['user_email'] ."<br/>";
header('Content-Type: image/png');
echo $row['user_profile_picture'];
}
<html>
<img src='profile.php?imgid=<?php echo $row['user_profile_picture'];?>'/>
</html>
But the image dosenot show and also the rest of the data dosenot display when i putheader('Content-Type: image/png');
Create an image.php:
<?php
$sql = "SELECT user_profile_picture FROM profile WHERE id = " . $_GET['id'];
$query = $db->query($sql);
$row = $query->fetchArray(SQLITE3_ASSOC);
header('Content-Type: image/png');
echo $row['user_profile_picture'];
In profile.php:
<img src='image.php?id=<?php echo $row['id'];?>'/>

displaying an image saved as a Blob in a MySql DB

Im creating a blog and the little bit of code below is where the blog geets printed out.
I've got a blob saved in my mysql database and im trying to turn it back into an image.
the imageName, imageType, imageSize, imageContect all receive values when i run my code. The problem is that the imageContent variable displays a load of random characters rather then an image. it seems that the reason for this is the headers but i've no idea what to do. can anyone help me to recode the image. thanks
while($row = mysql_fetch_array($result))
{
echo "name ".$row['imageName'].'<BR>';
echo "type ".$row['imageType'].'<BR>';
echo "size ".$row['imageSize'].'<BR>';
echo '<B>'.$row['blogTitle'].'</B><br />';
echo '<A HREF = http://www.alcaeos.com/blog/displayblogProcess.php?mode=edit&blogID='.$row['blogID'].'>Edit</A> ';
echo '<A HREF = http://www.alcaeos.com/blog/displayblogProcess.php?mode=delete&blogID='.$row['blogID'].'>Delete</A><BR />';
echo $row['blog'].'<br />';
header("Content-length:".$row['imageSize']);
header("Content-type:.".$row['imageType']);
header("Content-Disposition: attachment; filename=".$row['imageName']);
echo $row['imageContent'].'---------<br /><br /><br />';
}
Here is a fairly simple example of displaying an image stored as a blob.
<?php
require_once ('./includes/db.inc.php'); // Connect to the db.
//let the browser know its an image
header("Content-type: image/jpeg");
// Make the query.
$query = "SELECT thumbnail FROM items where item_id=" . $_GET['item_id'];
$result = #mysql_query ($query);
if ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
echo $row['thumbnail'];
}
mysql_close(); // Close the database connection.
?>
Skip the Content-length and Content-disposition, just use Content-type and set it to a valid MIME type.
Assuming they're JPEGs, you'd do this:
header( 'Content-type: image/jpeg' );
Check out this link too

Categories