使用PDO问题从MySQL检索图像

时间:2015-03-09 09:55:23

标签: php mysql image pdo

我已将其字段上的图像迁移到mysql。

当我尝试用几个php代码可视化它时,我得到一个破碎的图像图标或者我下载了我尝试在新尝试中使用的PHP代码(PHP: Retrieve image from MySQL using PDO):

<?php
$con = mysqli_connect('localhost', 'root', '', 'access');
$query = mysqli_query($con,"SELECT EscudoClub FROM tclubs WHERE CodClub =    'C13'");
$imageData = mysqli_fetch_array($query, MYSQLI_ASSOC);
$image = $imageData['EscudoClub'];
header("Content-type: image/jpeg");
echo $image;
mysqli_free_result($query);
mysqli_close($con);

?>

使用上面的代码我得到一个破碎的图像图标和使用pdo我只得到dowwnload PHP代码我猜因为一些语法问题:     

//$dbName = $_SERVER["DOCUMENT_ROOT"]."\\..\db\\teknofo.mdb";
//$con = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=access;   Uid=; Pwd=;");
$con = new PDO('mysql:host=localhost;dbname=access;charset=utf8', 'root', '');
$sql = "SELECT EscudoClub FROM tclubs WHERE CodClub = 'C13'";
$st = $con->prepare($sql);
$st->execute(array(17));
$st->bindColumn('photo', $photo, PDO::PARAM_LOB);
$st->fetch(PDO::FETCH_BOUND);
odbc_longreadlen($st, 131072);        
odbc_binmode($st,ODBC_BINMODE_CONVERT);                            
ob_clean();
header('Content-Type: image/*');
if ($rd = $st->fetch(PDO::FETCH_BOUND)) 
{
echo $rd['photo'];
ob_end_flush();
$con = null;
}
?>

拜托,你能帮我解决这个问题吗?

亲切的问候

3 个答案:

答案 0 :(得分:1)

执行语句时,提供显式参数值(17) - 但该语句不包含任何参数占位符!然后,您尝试绑定名为'photo'的列,该列在结果集中不存在。 odbc_*来电也不应该在那里。

$con = new PDO('mysql:host=localhost;dbname=access;charset=utf8', 'root', '');
     // DON'T USE ROOT USER !!!

$st = $con->prepare('SELECT EscudoClub FROM tclubs WHERE CodClub = ?');
$st->execute(array('C13'));
if ($rd = $st->fetch())
{
  header('Content-Type: image/*'); // you should give an exact MIME type
  echo $rd['EscudoClub'];
}

答案 1 :(得分:0)

您应首先映射来自:

的$ sql调用
$sql = "SELECT EscudoClub FROM tclubs WHERE CodClub = 'C13'";

致:

"SELECT EscudoClub FROM tclubs WHERE CodClub = ':cod_club'";
$st = $con->prepare($sql);
$st->execute(array('cod_club' => 123456));

我不知道这是否可以解决您的问题,但是当您从调用中直接得到PHP源代码时,通常是由于您的服务器配置(apache,nginx等)。

答案 2 :(得分:0)

我想补充一点,访问数据库中的图片存储为微软word图片。在尝试显示之前,我不知道是否应该将它们导出为任何图像格式(jpeg,png ..)。问题是我从访问数据库迁移了所有数据,并且有一张包含1,3GB照片的表。

亲切的问候。