PHP的PDO大对象(LOBs)
作者:php参考手册 发布时间:2023-06-07 06:45:36
标签:php,pdo,大对象,lobs
PHP PDO 大对象 (LOBs)
应用程序在某一时刻,可能需要在数据库中存储"大"数据。
"大"通常意味着"大约 4kb 或以上",尽管某些数据库在数据达到"大"之前可以轻松地处理多达 32kb 的数据。大对象本质上可能是文本或二进制。
在PDOStatement::bindParam()
或PDOStatement::bindColumn())
调用中使用PDO::PARAM_LOB类型码可以让 PDO使用大数据类型。
PDO::PARAM_LOB告诉PDO作为流来映射数据,以便能使用PHP Streams API来操作。
从数据库中显示一张图片
下面例子绑定一个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, $type, PDO::PARAM_STR, 256);
$stmt->bindColumn(2, $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);
header("Content-Type: $type");
fpassthru($lob);
?>
插入一张图片到数据库
下面例子打开一个文件并将文件句柄传给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, $fp, PDO::PARAM_LOB);
$db->beginTransaction();
$stmt->execute();
$db->commit();
?>
插入一张图片到数据库: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, $fp, PDO::PARAM_LOB);
$stmt->beginTransaction();
$stmt->execute();
$stmt->commit();
?>


猜你喜欢
- 本文实例讲述了python 并发下载器实现方法。分享给大家供大家参考,具体如下:并发下载器并发下载原理from gevent import
- 本文实例为大家分享了js实现鼠标切换图片的具体代码,供大家参考,具体内容如下实现效果,可以利用鼠标移动在对应的小点点上,或者点击左右两侧的箭
- 本文实例讲述了python简单实现旋转图片的方法。分享给大家供大家参考。具体实现方法如下:# rotate an image counter
- 利用layui制作与众不同的感谢表单,表格layui极大的提高了前端开发效率,它极具个性的样式等等都非常吸引人,接下来我将为大家展示如何利用
- Xajax是PHP一个不用刷新或者跳到其他页面,就能通过点击组件等与后台后台数据库交互的技术Xajax是php的一个插件,要想使用Xajax
- 一种类似Flask开发的WebSocket-Server服务端框架,适用python3.X1、安装模块Pywsspip install py
- 前言图像分割是许多计算机视觉应用中的关键处理步骤,通常用于将图像划分为不同的区域,这些区域常常对应于真实世界的对象。因此,图像分割是图像识别
- ktime 开始时间串 dtime 到期时间串 jmonth 付费间隔月份数 可选(1,3,6,12) 需要 按月查询数据 比如说 ktim
- 在前面实现了平移和缩放,还有一种常用的坐标变换,那就是旋转。比如拍摄的照片上传到电脑里,再打开时发现人的头在下面脚在上,这样肯定看不了,那么
- asp.net压缩文件夹调用示例:rar("e:/www.aspxhome/", "e:/www.aspxho
- 前言 &nbs
- javascript:a. 代码:/*@desc:js搜索函数,可用于关键字匹配@param key 关键字@param str 要搜索的字
- 本文实例讲述了python实现定时同步本机与北京时间的方法。分享给大家供大家参考。具体如下:这段python代码首先从www.beijing
- Flask数据模型和连接数据库flask是基于MTV的结构,其中M指的就是模型,即数据模型,在项目中对应的是数据库。flask与数据库建立联
- 现将几种主要情况进行小结: 一、如何输入NULL值 如果不输入null值,当时间为空时,会默认写入"1900-01-01"
- 整理文档,搜刮出一个vue事件对象、冒泡、阻止默认行为的代码,稍微整理精简一下做下分享。事件对象<!DOCTYPE html>&
- Stochastic Depth论文:Deep Networks with Stochastic Depth本文的正则化针对于ResNet中
- 一、绘制带趋势线的散点图实现功能:在散点图上添加趋势线(线性拟合线)反映两个变量是正相关、负相关或者无相关关系。实现代码:import pa
- 为了显示一个渐变而专门制作一个图片的做法是不灵活的,而且很快会成为一种不好的做法。但是遗憾的是,截至写这篇文章,可能还必须这样做,但是希望不
- 这篇文章主要介绍了JS图片懒加载的优点及实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以