2015-05-25 3 views
1

Я пытаюсь сохранить jpg-изображения в базе данных MySQL. Вставка работает, но я не могу отобразить результаты.Хранить и извлекать JPG в Mysql с помощью PHP

здесь MySQL определение таблицы:

drop table if exists product_image; 
create table product_image(
id_img int not null primary key auto_increment, 
name varchar(512), 
img LONGBLOB NOT NULL, 
id_product int not null 
); 

PHP скрипт для хранения входных данных пользователя файл:

<!DOCTYPE html> 
<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="image" > 
    <input type="submit" value="Upload" name="submit"> 
</form> 


<?php 

$servername = "localhost"; 
$username = "root"; 
$password = "123456"; 
$dbname  = "store"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

if (isset($_POST['submit'])) { 



    $imageName = mysql_real_escape_string($_FILES["image"]["name"]); 
    $imageData = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"])); 
    $imageType = mysql_real_escape_string($_FILES["image"]["type"]); 

    if (substr($imageType, 0, 5) == "image") { 

     $sql = "insert into product_image (name,img,id_product) values ('$imageName','$imageData','65') "; 

     if ($conn->query($sql) === TRUE) { 
      echo "New record created successfully"; 
     } else { 
      echo "Error: " . $sql . "<br>" . $conn->error; 
     } 



     echo $imageName, $imageType; 
    } 

    else { 

     echo "select image type:"; 
    } 

} 


$conn->close(); 



?> 

</body> 
</html> 

PHP скрипт для отображения изображения:

<?php 
header("content-type:image/jpg"); 
$servername = "localhost"; 
$username = "root"; 
$password = "123456"; 
$dbname  = "store"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$q  = "select * from product_image"; 
$result = $conn->query($q); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while ($row = $result->fetch_assoc()) { 

     $img = $row["img"]; 
     #echo "id: " . $row["img"]. "<br>"; 
     #echo '<img src="data:image;base64, '.$row["img"].' height="200" width="200">'; 
    } 
} 

else { 
    echo "0 results"; 
} 


echo $img; 

$conn->close(); 

?> 

Я вижу маленькую иконку когда я вызываю скрипт PHP для просмотра изображения. Есть ли что-то, что мне не хватает.

спасибо.

+1

вы должны установить заголовок типа содержимого, прежде чем повторяющий изображение. простой Google или поиск бы выявили ответ. – r3wt

+0

как насчет использования base64_encode()? –

+0

Возможный дубликат [Echo/print jpg-image с php, для безопасности?] (Http://stackoverflow.com/questions/1422510/echo-print-a-jpg-image-with-php-for-safety) – r3wt

ответ

0

использовать что-то вроде этого

<img src="data:image/jpeg;base64,<?php echo base64_encode($row['img']); ?>" class="latest_images img-responsive img-thumbnail" alt="Cinque Terre" > 
Смежные вопросы