使用PDO PHP从mysql数据库中检索图像

时间:2014-01-27 09:49:45

标签: php mysql pdo

我想在PHP中显示一个blob(可以是jpg或png),所以我认为:

$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是资源,字符串给出" 我哪里错了? 谢谢你的帮助:)

编辑:$ type give" image / jpeg"但是当我在引号(没有变量)里面写这个时,就像那个标题一样(" Content-Type:image / jpeg")我的项目什么也没显示,我没有错误:/只是{{3} }

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();

上传期间可能会有什么问题?

1 个答案:

答案 0 :(得分:0)

fpassthru()函数需要文件指针的资源,但是在这里您将查询结果作为字符串传递给它。而不是使用fpassthru你只需要回显字符串。

尝试,

header("Content-Type: ".$type);
header("Content-Length: " . strlen($blob_logo));
echo $blob_logo;
exit();