使用 PDO 问题从 MySQL 检索图像


Retrieve image from MySQL using PDO problems

我已经将一个字段上有图像的访问数据库迁移到了mysql。

当我尝试使用多个 php 代码可视化它们时,我得到一个损坏的图像图标,或者我下载了我尝试在新尝试中使用的 php 代码(PHP:使用 PDO 从 MySQL 检索图像):

<?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;
}
?>

拜托,你能帮我这个吗?

亲切问候

执行语句时,您需要提供一个显式参数值 (of 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'];
}

您应该首先映射来自以下位置的$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等)。

我想

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

亲切问候。