广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php如何用PDO操作大数据对象
  • 539
分享到

php如何用PDO操作大数据对象

phpPDOPDO操作大数据对象 2022-11-12 06:11:10 539人浏览 独家记忆
摘要

目录什么是大数据对象直接操作大数据对象会怎么样?正确的姿势总结什么是大数据对象 “大”通常意味着“大约 4kb 或以上”,尽管某些数据库在数据达到“大”之前可以轻松地处理多达 32

什么是大数据对象

“大”通常意味着“大约 4kb 或以上”,尽管某些数据库在数据达到“大”之前可以轻松地处理多达 32kb 的数据。大对象本质上可能是文本或二进制形式的,我们在 PDOStatement::bindParam() 或 PDOStatement::bindColumn() 调用中使用 PDO::PARAM_LOB 类型码可以让 PDO 使用大数据类型。PDO::PARAM_LOB 告诉 PDO 作为流来映射数据,以便能使用 PHP Streams api 来操作。

对于 Mysql 来说,将字段类型设置为 blob 即是大对象格式的字段。而在 bindParam() 或 bindColumn() 时,指定字段的参数为 PDO::PARAM_LOB 类型,就可以直接以句柄形式获得这个对象里面的内容,就像 fopen() 一样地继续对它进行操作。


CREATE TABLE `zy_blob` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `attach` longblob,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

这是我们测试用的一个数据表,将 attach 字段设置为了 longblob 类型,也就是比较大的 blob 类型,这样我们就可以存储更多地信息。毕竟现在的图片或文件随随便便就是轻松地几m或几十m起步的,我们直接使用最大的 blob 类型来进行简单地测试。tinyblob 的大小为 255 字节,blob 类型的大小为 65k ,mediumblob 为 16M ,longblob 为 4G 。

直接操作大数据对象会怎么样?

我们先来简单地直接操作大数据对象,看看是什么样的结果。


$stmt = $pdo->prepare("insert into zy_blob (attach) values (?)");
$fp = fopen('4960364865db53Dcb33bcf.rar', 'rb');
$stmt->execute([$fp]);

$stmt = $pdo->query("select attach from zy_blob where id=1");
$file = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($file); 
// Array
// (
//     [attach] => Resource id #6
// )

在这段代码中,我们没有绑定字段,然后直接将 fopen() 打开的文件存储到 blob 字段中。可以看出,在数据库中,blob 相关的字段只是存储了 Resource id #6 这样的字符串。也就是说,在不做任何处理的情况下,$fp 句柄被强制转换成了字符串类型,而句柄类型被强转的结果就是只会输出一个资源ID,而 blob 也只是和字符类型的字段一样记录了这个字符串而已。

正确的姿势

接下来我们来看看正确的姿势,也就是通过 bindParam() 来插入数据,通过 bindColumn() 来读取数据。


$stmt = $pdo->prepare("insert into zy_blob (attach) values (?)");

$fp = fopen('4960364865db53dcb33bcf.rar', 'rb');

$stmt->bindParam(1, $fp, PDO::PARAM_LOB); // 绑定参数类型为 PDO::PARAM_LOB
$stmt->execute();

$stmt = $pdo->prepare("select attach from zy_blob where id=2");
// // $file = $stmt->fetch(PDO::FETCH_ASSOC);
// // print_r($file); // 空的
$stmt->execute();
$stmt->bindColumn(1, $file, PDO::PARAM_LOB); // 绑定一列到一个 php 变量
$stmt->fetch(PDO::FETCH_BOUND); // 指定获取方式,返回 TRUE 且将结果集中的列值分配给通过 PDOStatement::bindParam() 或 PDOStatement::bindColumn() 方法绑定的 PHP 变量
print_r($file); // 二进制乱码内容
$fp = fopen('a.rar', 'wb');
fwrite($fp, $file);

总结

大数据对象操作的究竟是什么呢?其实就是我们平常要保存的大文件。我们将这些文件以二进制流的方式读取到程序后,再将它们保存在数据库的字段中。想想我们平常开发用到的最多的图片保存就可以用这个来做。但是,此处可以划重点了,我们更加推荐的还是将文件直接保存在文件目录中,而数据库中只保存它们的路径就可以了。数据库资源是宝贵的,表越大越不利于优化,而且数据库本身还有缓存机制,浪费它的资源来保存这种大型的文件其实是得不偿失的。当然,如果有某些特殊的需要,比如一些私密文件不想直接在硬盘文件目录中保存,或者做为临时的跨服务器存储方案都是可以的。

在现代开发中,相信你的公司也不会吝啬到不去买一个云存储(七牛、upyun、阿里云OSS)。它们不仅仅是能够做为一个存储器、网盘,而是有更多的功能,比如图片的裁剪、水印,赠送的 CDN 、带宽 、 流量之类的,总之,现代的存储大家还是尽量上云吧,即使是个人开发,也有不少厂商会提供小流量小数据量情况下的免费使用,这个都比我们自己来要方便很多。

测试代码

参考文档:

https://www.php.net/manual/zh/pdo.lobs.php

以上就是php如何用PDO操作大数据对象的详细内容,更多关于php 用PDO操作大数据对象的资料请关注编程网其它相关文章!

--结束END--

本文标题: php如何用PDO操作大数据对象

本文链接: https://www.lsjlt.com/news/128403.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php如何用PDO操作大数据对象
    目录什么是大数据对象直接操作大数据对象会怎么样?正确的姿势总结什么是大数据对象 “大”通常意味着“大约 4kb 或以上”,尽管某些数据库在数据达到“大”之前可以轻松地处理多达 32...
    99+
    2022-11-12
    php PDO PDO操作大数据对象
  • PDO中操作大数据对象的方法
    这篇文章主要介绍了PDO中操作大数据对象的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PDO操作大数据对象一般在数据库中,我们保存的都...
    99+
    2022-10-18
    php
  • 如何数组化操作对象php
    在PHP中,对象是非常重要的一种数据类型,但是在某些情况下,我们可能希望将对象转换成数组。数组操作比对象操作更加简单和方便,所以将对象数组化是非常有用的。本文将讨论如何在PHP中将对象数组化,以便于后续的操作和处理。一、使用类型转换(typ...
    99+
    2023-05-19
  • Java如何处理大数据中的对象操作问题?
    随着数据量的不断增大,Java在处理大数据中的对象操作问题上面也会遇到一些困难。本文将介绍Java中处理大数据中的对象操作问题,并提供一些代码示例。 一、使用缓存来优化对象操作 在处理大数据量时,Java中的对象操作会变得十分缓慢,因为内...
    99+
    2023-10-12
    大数据 对象 numpy
  • PHP中如何使用Git来操作对象数组?
    Git是一款非常流行的版本控制工具,它可以帮助我们更好地管理代码版本和协作开发。在PHP开发中,我们经常需要操作对象数组,那么如何使用Git来操作对象数组呢?本文将为您详细介绍。 一、Git的基本使用 Git的基本使用包括创建仓库、提交代...
    99+
    2023-09-23
    git 对象 数组
  • PHP中面向对象的数据库操作类
        在PHP的面向过程中,我们可以通过封装函数来实现对数据库的操作,那么在面向过程中,我们同样可以通过类来实现对数据库的操作,整个过程和面向过程的思路大体差不多,...
    99+
    2022-10-18
    数据库 操作 面向对象
  • php中PDO对象如何安装配置与使用
    这篇文章将为大家详细讲解有关php中PDO对象如何安装配置与使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。对PDO对象的认识1.1 简介PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻...
    99+
    2023-06-22
  • PHP中如何使用对象数组来操作文件?
    PHP是一门广泛应用于Web开发的编程语言,它具有简单易学、开发效率高的优点。在PHP中,使用对象数组来操作文件是一种非常常见的方式。本文将介绍PHP中如何使用对象数组来操作文件。 一、打开文件 在PHP中,我们可以使用fopen()函数来...
    99+
    2023-08-26
    对象 数组 文件
  • 如何使用PHP对象数组来处理文件操作?
    PHP是一种非常流行的编程语言,广泛应用于Web开发。在PHP中,对象数组是一种非常有用的数据结构,可以用来存储和处理文件操作。在本文中,我们将介绍如何使用PHP对象数组来处理文件操作。 一、创建对象数组 在PHP中,创建对象数组非常简单。...
    99+
    2023-08-26
    对象 数组 文件
  • 如何用php pdo连接数据库
    本篇内容介绍了“如何用php pdo连接数据库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!要用php连接...
    99+
    2022-10-18
    pdo php
  • PHP中如何读取和操作对象数组文件?
    在PHP中,对象和数组是两种非常重要的数据类型。当我们需要将对象和数组保存到文件中时,我们可以使用对象数组文件。本文将介绍如何在PHP中读取和操作对象数组文件。 什么是对象数组文件 对象数组文件是一种将对象和数组保存到文件中的数据结构。在P...
    99+
    2023-08-26
    对象 数组 文件
  • 对象编程如何助力PHP大数据开发技术?
    PHP是一种广泛应用于Web开发领域的脚本语言,其简单易学、灵活高效的特点深受开发者的喜爱。而大数据技术则是当前数据处理领域最热门的技术之一。那么,如何将对象编程的思想应用于PHP大数据开发技术中呢?本文将从以下几个方面探讨。 一、什么是...
    99+
    2023-09-05
    大数据 开发技术 对象
  • PHP、JavaScript 和 Apache:如何使用对象来处理大型数据集?
    对于需要处理大型数据集的开发者来说,对象是一种非常有用的工具。PHP、JavaScript 和 Apache 都提供了创建和使用对象的功能,可以大大简化代码,并提高可维护性和可扩展性。在本文中,我们将介绍如何使用对象来处理大型数据集。 一...
    99+
    2023-08-19
    javascript 对象 apache
  • 大数据对象如何在Python中实现?
    大数据对象是指数据量非常庞大的数据集合,这些数据集合通常包含了成千上万个数据点,如何在Python中实现大数据对象的处理是一个非常重要的问题。本文将会介绍如何在Python中实现大数据对象的存储、处理以及分析。 一、Python中的大数据对...
    99+
    2023-10-21
    http 大数据 对象
  • 如何在 PHP 中使用 Shell 命令来操作数组和对象?
    PHP 是一种非常流行的服务器端编程语言,可以被广泛应用于 Web 开发和命令行工具开发。在 PHP 中,我们经常会使用 Shell 命令来执行一些操作,例如创建文件、复制文件、修改文件权限等等。不过,你知道吗?PHP 中也可以使用 She...
    99+
    2023-08-22
    数组 对象 shell
  • 如何使用ajax操作JavaScript对象
    这篇文章主要讲解了“如何使用ajax操作JavaScript对象”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用ajax操作JavaScript对象”...
    99+
    2022-10-19
    ajax javascript
  • 如何使用 GO SHELL 操作对象?
    Go Shell是一个非常强大的工具,可以让开发者在命令行中快速编写和运行Go代码。在这篇文章中,我将向大家介绍如何使用Go Shell来操作对象,并提供一些演示代码。 首先,我们需要了解一些基本概念。在Go中,对象是指在代码中创建的实体...
    99+
    2023-09-05
    自然语言处理 shell 对象
  • PHP中如何实现对象的并发操作?
    在PHP中,对象的并发操作是一个非常重要的主题,因为它可以提高应用程序的性能和响应速度。在本文中,我们将讨论如何在PHP中实现对象的并发操作。 首先,让我们先了解一下PHP中的并发操作是什么意思。简单来说,并发操作是指多个线程或进程同时执行...
    99+
    2023-10-22
    对象 并发 shell
  • PHP学习笔记:如何使用shell来操作对象?
    在PHP中,对象是一种非常常见的数据类型。我们经常需要对这些对象进行各种操作,比如创建、修改、删除等等。而使用shell来操作对象,则是一种非常方便和高效的方式。在本文中,我们将介绍如何使用shell来操作PHP对象。 创建对象 在P...
    99+
    2023-07-31
    学习笔记 对象 shell
  • 数据库中如何操作大数据集
    这篇文章给大家分享的是有关数据库中如何操作大数据集的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 一、子查询插入数据1、语法INSERT INTO table [ column...
    99+
    2022-10-19
    数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作