PHP在数据库中保存与提取图片文件

文章作者:中山市飞娥软件工作室「Feiesoft.com」  浏览次数:3095 次  更新日期:2014-03-19

//例一:PHP将图片文件保存在数据库中
//连接数据库
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
$st = $db->prepare("INSERT INTO images (id, contenttype, imagedata) VALUES (?, ?, ?)");
//生成一个唯一的ID号自定义函数
$id = get_new_id();
//以二进制方式打开上传的文件
$fp = fopen($_FILES['file']['tmp_name'], 'rb');
$st->bindParam(1, $id);
$st->bindParam(2, $_FILES['file']['type']);
$st->bindParam(3, $fp, PDO::PARAM_LOB);
//事务开始
$db->beginTransaction();
$st->execute();
$db->commit();
//例二:PHP从数据库中取出图片数据记录
//连接数据库
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
$st = $db->prepare("SELECT contenttype, imagedata FROM images WHERE id=?");
$st->execute(array($_GET['id']));
$st->bindColumn(1, $type, PDO::PARAM_STR, 256);
$st->bindColumn(2, $lob, PDO::PARAM_LOB);
$st->fetch(PDO::FETCH_BOUND);
header("Content-Type: $type");
//将给定的文件指针从当前的位置读取到 EOF,并把结果写到输出缓冲区(浏览器)。
fpassthru($lob);
//例三:PHP将图片文件保存在Oracle数据库中
//连接Oracle数据库
$db = new PDO('oci:', 'scott', 'tiger');
$st = $db->prepare("INSERT INTO images (id, contenttype, imagedata) " . "VALUES (?, ?, EMPTY_BLOB()) RETURNING imagedata INTO ?");
//生成一个唯一的ID号自定义函数
$id = get_new_id();
$fp = fopen($_FILES['file']['tmp_name'], 'rb');
$st->bindParam(1, $id);
$st->bindParam(2, $_FILES['file']['type']);
$st->bindParam(3, $fp, PDO::PARAM_LOB);
//事务开始
$st->beginTransaction();
$st->execute();
$st->commit();