PHP的PDO大对象(LOBs)
PHP中的PDO大对象(LOBs)处理
在应用程序中,经常需要处理在数据库中存储的"大"数据,这些数据可能是文本或二进制形式,通常大小超过常规的数据类型可以处理的范围。在PHP的PDO中,我们可以使用LOB(Large Object)来处理这类数据。
一、从数据库中读取图片
使用PDO,可以轻松地从数据库读取大对象。以下是一个简单的例子,演示如何从数据库获取图片并将其显示在网页上。
建立一个数据库连接,并准备一个SQL语句来查询包含大对象的表。使用`bindParam()`或`bindColumn()`函数绑定结果集到PHP变量上。对于大对象,使用`PDO::PARAM_LOB`类型码。
```php
$db = new PDO('数据库连接信息'); // 连接数据库
$stmt = $db->prepare("SELECT contenttype, imagedata FROM images WHERE id = :id"); // 准备SQL语句
$stmt->bindParam(':id', $_GET['id']); // 绑定参数
$stmt->execute(); // 执行查询
$stmt->bindColumn(1, $type, PDO::PARAM_STR, 256); // 绑定结果集到变量
$stmt->bindColumn(2, $lob, PDO::PARAM_LOB); // 使用LOB类型处理大对象数据
$stmt->fetch(PDO::FETCH_BOUND); // 获取数据行并绑定变量值
header("Content-Type: $type"); // 设置响应头为内容类型
fpassthru($lob); // 将大对象内容发送到浏览器输出流中显示图片
```
在上面的例子中,通过PDO读取图片数据并将其作为流发送到浏览器显示。类似地,也可以使用其他流操作函数如`fgets()`, `fread()`, `stream_get_contents()`等来操作LOB数据。
```php
$db = new PDO('数据库连接信息'); // 连接数据库
```php
try {
$db = new PDO('oci:', 'scott', 'tiger');
$stmt = $db->prepare("INSERT INTO images (id, contenttype, imagedata) VALUES (?, ?, EMPTY_BLOB()) RETURNING imagedata INTO ?");
} catch (PDOException $e) {
// 处理异常...
}
```
获取一个新的ID(假设有一个函数`get_new_id()`用于分配新ID):
```php
$id = get_new_id(); // 调用某个函数来分配一个新ID
```
```php
$fp = fopen($_FILES['file']['tmp_name'], 'rb'); // 打开上传的文件流
$stmt->bindParam(1, $id); // 绑定ID参数
$stmt->bindParam(2, $_FILES['file']['type']); // 绑定文件类型参数
$stmt->bindParam(3, $fp, PDO::PARAM_LOB); // 绑定LOB参数,这里使用文件流作为数据源
```
开始数据库事务:
```php
$stmt->beginTransaction(); // 开始事务处理
```
```php
```
编程语言
- PHP的PDO大对象(LOBs)
- javaScript手机号码校验工具类PhoneUtils详解
- 如何在vue里添加好看的lottie动画
- Vue实现active点击切换方法
- vue2中filter()的实现代码
- 详解angular如何调用HTML字符串的方法
- PHP convert_uudecode()函数讲解
- Laravel框架中VerifyCsrfToken报错问题的解决
- Spring在web.xml中的配置详细介绍
- 利用chrome浏览器进行js调试并找出元素绑定的点击
- js小数计算小数点后显示多位小数的实现方法
- header与缓冲区之间的深层次分析
- 浅谈javascript构造函数与实例化对象
- asp.net中javascript的引用(直接引入和间接引入)
- CentOS 7下使用rpm包安装mysql 5.7.18
- 解决vue2.0动态绑定图片src属性值初始化时报错的