锟斤拷锟斤拷锟� (LOBs)

应锟矫筹拷锟斤拷锟斤拷某一时锟教o拷锟斤拷锟斤拷锟斤拷要锟斤拷锟斤拷锟捷匡拷锟叫存储"锟斤拷"锟斤拷锟捷★拷"锟斤拷"通锟斤拷锟斤拷味锟斤拷"锟斤拷约 4kb 锟斤拷锟斤拷锟斤拷"锟斤拷锟斤拷锟斤拷某些锟斤拷锟捷匡拷锟斤拷锟斤拷锟捷达到"锟斤拷"之前锟斤拷锟斤拷锟斤拷锟缴地达拷锟斤拷锟斤拷 32kb 锟斤拷锟斤拷锟捷★拷锟斤拷锟斤拷锟斤拷锟斤拷峡锟斤拷锟斤拷锟斤拷谋锟斤拷锟斤拷锟斤拷锟狡★拷锟斤拷 PDOStatement::bindParam() 锟斤拷 PDOStatement::bindColumn()) 锟斤拷锟斤拷锟斤拷使锟斤拷 PDO::PARAM_LOB 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟� PDO 使锟矫达拷锟斤拷锟斤拷锟斤拷锟酵★拷PDO::PARAM_LOB 锟斤拷锟斤拷 PDO 锟斤拷为锟斤拷锟斤拷映锟斤拷锟斤拷锟捷o拷锟皆憋拷锟斤拷使锟斤拷 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(); // 锟斤拷锟斤拷某锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷 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(); // 锟斤拷锟斤拷某锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷 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();
?>