PHP的PDO大对象(LOBs)
时间:2022-07-27
本文章向大家介绍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();
?
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对ZaLou.Cn的支持。
- Python time模块详解(时间戳↔元组形式↔格式化形式三者转化)
- Maven 核心原理解析(2)
- Linux C 编程——互斥锁mutex
- python两个 list 获取交集,并集,差集的方法.
- python——时间与时间戳之间的转换
- Maven 核心原理解析(3)
- String中的null,以及String s;等区别详解
- Shell编程——Shell中的数学运算
- 如何利用微信监管你的TF训练?
- python 安装spark_Spark环境搭建 (Python)
- MongoDB触发oom-killer的简单处理(一)(r7笔记第54天)
- int与integer的区别
- java 自动装箱与拆箱
- python读取文件——python读取和保存mat文件
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Android在自定义类中实现自定义监听器方式
- 解决WebView通过URL加载H5界面出现空白的问题
- kotlin 定义接口并实现回调的例子
- STL 总结与常见面试题
- kotlin中EditText赋值Type mismatch方式
- Kotlin 创建接口或者抽象类的匿名对象实例
- kotlin Context使用详解
- Android-ViewModel和LiveData使用详解
- 详解Android开发录音和播放音频的步骤(动态获取权限)
- Android自定义带圆角的ImageView
- 关于Kotlin写界面时诸多控件的点击事件
- Android webview注入JS代码 修改网页内容操作
- Kotlin 使用高阶函数实现回调方式
- Android WebView通过动态的修改js去拦截post请求参数实例
- Android使用Kotlin实现多节点进度条