2016-09-25 4 views
-1

Я пытаюсь получить файл PNG изображений из базы данныхизвлекать изображения из базы данных с помощью Mysqli PHP 7

Вот вызов внутри <img> тега внутри тела:

<img src="..\BankLogin\man.php?id=2" style="width:128px;height:150px"> 

Вот файл man.php :.

<?php 
    $link = mysqli_connect("localhost","root","","images"); 
    $imgId = $_GET['id']; 
    if (!empty($imgId)) { 
    $sqliCommand = "SELECT image FROM images WHERE id = $imgId"; 
    $result = mysqli_query($sqliCommand,$link); 
    $row = mysqli_fetch_assoc($result); 
    mysqli_close($link); 
    header("Content-type: image/png"); 
    echo $row['image']; 
    } 
?> 

на выполнение кода я просто получить кадр изображения с «выгружается изображение» (? я говорю это правильно) Я уверен, что что-то не так я n файл man.php, возможно, в echo $ row ['image']. Я не уверен, как это сделать правильно. Любая помощь с этим будет замечательной.

+2

, что было бы интересно инъекции SQL – RamRaider

+0

Можете ли вы быть более конкретным? – newbie

+0

Можно ли считать данные изображения в базе данных? – GeorgeQ

ответ

0

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

echo '<img src="data:image/jpeg;base64,'.base64_encode($rows['image']).'"/>' 

Пример:

Чтобы получить BLOB изображение из БД вы должны сделать так.

<?php 
$db = mysqli_connect("localhost","root","","dbname"); //keep your db name 
$query = "SELECT * FROM image WHERE id = $id"; 
$sth = $db->query($query); 
$fetch=$sth->fetch_assoc(); 
echo '<img src="data:image/jpeg;base64,'.base64_encode($fetch['image']).'"/>'; 
?> 

для вставки изображения необходимо следовать процедуре, как это так, что если вы закодировать его в качестве базы 64 вы можете получить изображение совершенно без каких-либо ошибок.

<?php 
$conn = mysqli_connect("localhost","root","","DbName"); //keep your db name 
$single_image = addslashes(file_get_contents($_FILES['images']['tmp_name'])); 
//U have to keep your DB table column name for insertion. I keep image type Blob. 
$query = "INSERT INTO image (image) VALUES('".$single_image."')"; 
$SQL = mysqli_query($conn, $query); 
?> 
+0

Все еще не работает! – newbie

+0

Нет, нет необходимости кодировать его, когда вы просто выводите его напрямую. –

+0

Как сохранить изображение в базе данных. Использование типа BLOB или что. –

0

Функция mysqli_close должна вызываться после того, как данные изображения эхом. Это происходит потому, что он разрушает результирующие наборы.

Также пожалуйста исправить уязвимость SQL Injection:

$imgId = (int)$_GET['id'];

+0

Пробовал оба, еще ничего! Что-то еще не так. – newbie

Смежные вопросы