从Firebird数据库获取后显示Blob内容

时间:2019-01-07 09:31:31

标签: php firebird

当我运行以下查询时

select first 1 IMG from img_lib;

我得到的输出为 IMG 4cc:0 BLOB显示设置为子类型1。此BLOB:子类型= 0

有人可以帮助我使用PHP代码将blob内容显示为图像吗? 我认为MySQL不能在这里工作,有人可以帮助我进行火鸟查询吗?

1 个答案:

答案 0 :(得分:2)

PHP提供了两个可用于Firebird / Interbase数据库的库:IbasePDO

Ibase提供了两种检索Blob的方法。 一种是通过ibase_blob_get函数使用延迟加载:

if (is_null($field)) return null;
$info = ibase_blob_info($field);
$handle = ibase_blob_open($field);
return ibase_blob_get($handle, $info[0]);

这种方法很好,当您只需要获取一些blob而不是全部blob时,因为这是一项昂贵的操作。

另一种方法是在ibase_fetch_assoc函数中使用IBASE_TEXT获取标志参数或获取object / row。它将在获取结果时立即返回blob内容。

第二个库,带有Firebird驱动程序的PDO,自动获取blob。

下一步,在将BLOB内容加载到内存中之后,需要将其输出为图像。 这是一个示例代码,假定您具有jpeg图像格式:

<?php
// fetch here blob content described in previous methods
header('Content-Type: image/jpeg');
echo $blob_content;

您的脚本的后期图像源,例如<img src="blob_image.php" />