2014-01-27 7 views
2

Я хотел бы, чтобы отобразить блоб (который может быть JPG или PNG) в PHP, так что я DIT, что:Получение IMG из базы данных MySQL с использованием PDO PHP

$soc ='5'; 
$sql = "Select fpsoc, type_logo, blob_logo from plogo_s where fpsoc ='".$soc."'"; 
$q = $base->prepare($sql); 
$q->execute(); 
$q->bindColumn(1, $soc, PDO::PARAM_STR, 256); 
$q->bindColumn(2, $type, PDO::PARAM_STR, 256); 
$q->bindColumn(3, $blob_logo, PDO::PARAM_LOB); 

$q->fetch(PDO::FETCH_BOUND); 

header("Content-Type: ".$type); 

fpassthru($blob_logo); 

, но у меня есть эта ошибка: "fpassthru() ожидает, что параметр 1 будет ресурсом, строка задана « Где я ошибаюсь? Thx для вашей помощи :)

Редактировать: $ type дать «image/jpeg», но когда я просто написал это внутри цитаты (без переменной), как этот заголовок («Content-Type: image/jpeg»), мой проект дисплея ничего и я не имеют ошибок:/только что http://puu.sh/6zVIj.png

Edit2: это, как я загрузить IMG на базе

$img_type = $_FILES['fic']['type']; 
    $img_nom = $_FILES['fic']['name'];  
    $img_blob = file_get_contents($_FILES['fic']['tmp_name']); 
    $sql = "INSERT INTO plogo_s (FPSOC, ID_LOGO, Blob_logo, Nom_logo, type_logo) VALUES (:soc, :id, :blob, :nom, :type) "; 
    $req = $base->prepare($sql); 
    $img_blob = addslashes($img_blob); 
    $soc = 'XX'; 
    $id= null; 
    $req->bindParam(':blob',$img_blob); 
    $req->bindParam(':nom', $img_nom); 
    $req->bindParam(':soc', $soc); 
    $req->bindParam(':id', $id); 
    $req->bindParam(':type', $img_type); 
    $req->execute(); 

что-то wrond во время загрузки может быть?

+0

'$ blob_logo' является строка, ее не ресурс, вы просто должны повторить $ blob_logo после заголовка –

+0

Когда я сделать эхо до $ blob_logo я получить некоторый текст, двоичный я думаю, я действительно не знаю, но не знаю ... – Roadirsh

+0

'echo $ blob_logo' вместо fpassthru ($ blob_logo) –

ответ

0

Функция fpassthru() ожидает ресурс указателя файла, но здесь вы передаете результат запроса в виде строки. вместо использования fpassthru вам просто нужно выставить строку.

Try,

header("Content-Type: ".$type); 
header("Content-Length: " . strlen($blob_logo)); 
echo $blob_logo; 
exit(); 
Смежные вопросы