使用PHP从oracle数据库中检索blob字段

时间:2011-12-21 17:48:06

标签: php oracle blob

我在oracle中有一个包含以下定义的表

file_id varchar2(20)
file_content blob

使用以下PHP代码我试图检索blob字段,但我得到NULL

$file_id = '1324410597775';
$content = strtoupper('file_content');
$holder = ":holder";

$conn = oci_connect("user","password","tstring");
$sql = "select $holder from tbl_file_upload where file_id = '$file_id'";


$parse = oci_parse($conn, $sql);

oci_bind_by_name($parse, $holder, $content);

oci_execute($parse);

$row = oci_fetch_array($parse, OCI_RETURN_NULLS);
$lob = null;
if (is_object($row[$content])) {
     $lob = $row[$content]->load();
     $row[$content]->free();
     echo "Here";
}

我按照此链接http://docs.oracle.com/cd/E17781_01/appdev.112/e18555/ch_twelve_blobs.htm

中的示例进行操作

如果有人能指出我正确的方向,我会很感激。

2 个答案:

答案 0 :(得分:0)

SELECT :holder表示oci_fetch_array()无法识别答案中的file_content列。请注意引用的教程如何使用SELECT pic FROM ...而不是SELECT :pic FROM ...

答案 1 :(得分:0)

<?php 

    $conn = oci_pconnect('JRAHMAN89', 'jahid7654321', '10.2.1.18:1528/dbpblrnd');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}


$stid = oci_parse($conn, "select * from TAGM_SHARE_REG where BO_FOLIO_NO='3'");
oci_execute($stid);
while (($rowA = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_LOBS)) != false)
{ 
   header("Content-Type:" . $rowA['DOCTYPE']);
   echo $rowA['DOC'];

}

?>

它将起作用