【发布时间】:2014-04-15 01:48:38
【问题描述】:
我在 MS ACCESS 数据库中有图像作为 BLOB。到目前为止,我已经将它们与 PHP 的 odbc 访问一起使用,并且工作正常。下面是简化程序:
code:
<?php
ini_set("odbc.defaultlrl", "5M");
$dbName = $_SERVER["DOCUMENT_ROOT"]."\\..\db\\teknofo.mdb";
$con = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=".$dbName,'','') or die('Ups');
ob_clean();
header('Content-Type: image/*');
$sql = "SELECT photo FROM Medlemmer WHERE Id=17";
$rd = odbc_exec($con, $sql);
if (odbc_fetch_row($rd)) { echo odbc_result($rd,"photo"); }
odbc_close($con);
ob_end_flush();
?>
我正在转换为 MySql,但必须使用 MS Access 进行一些时间: 因此,我正在使用 PDO 制作新代码,但我无法正确读取数据。
新的来了
<?php
$dbName = $_SERVER["DOCUMENT_ROOT"]."\\..\db\\teknofo.mdb";
$con = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");
$sql = "SELECT photo FROM Medlemmer WHERE id=?";
$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;
?>
最后一个代码适用于 MySql(更改了连接字符串),但不适用于 MS Access。
我在网上搜索了很长时间,但没有找到解决办法。
有人可以帮忙吗?
我可以使用第一个代码,但我还需要能够处理 BLOB 以用于其他目的。
【问题讨论】:
标签: php mysql ms-access pdo blob