����� (LOBs)

Ӧ�ó�����ijһʱ�̣�������Ҫ�����ݿ��д洢"��"���ݡ�"��"ͨ����ζ��"��Լ 4kb ������"������ijЩ���ݿ������ݴﵽ"��"֮ǰ�������ɵش����� 32kb �����ݡ���������Ͽ������ı�������ơ��� PDOStatement::bindParam() �� PDOStatement::bindColumn()) ������ʹ�� PDO::PARAM_LOB ����������� PDO ʹ�ô��������͡�PDO::PARAM_LOB ���� PDO ��Ϊ����ӳ�����ݣ��Ա���ʹ�� PHP Streams API ��������

Example #1 �����ݿ�����ʾһ��ͼƬ

�������Ӱ�һ�� LOB �� $lob ������Ȼ���� fpassthru() ���䷢�͵����������Ϊ LOB ����һ�������������� fgets()��fread() �Լ� stream_get_contents() �����ĺ������������������档

<?php
$db 
= new PDO('odbc:SAMPLE''db2inst1''ibmdb2');
$stmt $db->prepare("select contenttype, imagedata from images where id=?");
$stmt->execute(array($_GET['id']));
$stmt->bindColumn(1$typePDO::PARAM_STR256);
$stmt->bindColumn(2$lobPDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);

header("Content-Type: $type");
fpassthru($lob);
?>

Example #2 ����һ��ͼƬ�����ݿ�

�������Ӵ�һ���ļ������ļ�������� PDO ����Ϊһ�� LOB ���롣PDO�����ܵ������ݿ�������Ч�ķ�ʽ��ȡ�ļ����ݡ�

<?php
$db 
= new PDO('odbc:SAMPLE''db2inst1''ibmdb2');
$stmt $db->prepare("insert into images (id, contenttype, imagedata) values (?, ?, ?)");
$id get_new_id(); // ����ij������������һ���� ID

// ���账��һ���ļ��ϴ�
// ������ PHP �ĵ����ҵ��������Ϣ

$fp fopen($_FILES['file']['tmp_name'], 'rb');

$stmt->bindParam(1$id);
$stmt->bindParam(2$_FILES['file']['type']);
$stmt->bindParam(3$fpPDO::PARAM_LOB);

$db->beginTransaction();
$stmt->execute();
$db->commit();
?>

Example #3 ����һ��ͼƬ�����ݿ⣺Oracle

���ڴ��ļ�����һ�� lob��Oracle���в�ͬ������������֮����в��룬����ִ�в�ѯʱ�����½����� LOB ����0���ȱ���ʽ�ύ��

<?php
$db 
= new PDO('oci:''scott''tiger');
$stmt $db->prepare("insert into images (id, contenttype, imagedata) " .
"VALUES (?, ?, EMPTY_BLOB()) RETURNING imagedata INTO ?");
$id get_new_id(); // ����ij������������һ���� ID

// ���账��һ���ļ��ϴ�
// ������ PHP �ĵ����ҵ��������Ϣ

$fp fopen($_FILES['file']['tmp_name'], 'rb');

$stmt->bindParam(1$id);
$stmt->bindParam(2$_FILES['file']['type']);
$stmt->bindParam(3$fpPDO::PARAM_LOB);

$stmt->beginTransaction();
$stmt->execute();
$stmt->commit();
?>