搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小舞很执着
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
谷歌把GenAI装进Chrome_谷歌 genai
2
【优选算法】专题三:二分查找(二)
3
《通用数据保护条例》(GDPR)系列解读四:出海欧洲必须遵守的七大数据处理原则_gdpr七大原则
4
Sora 是什么
5
KUKA机器人之外部启动(PLC启动机器人)_kuka外部启动
6
AI大语言模型的训练与优化_ai训练模型
7
NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧_nl2sql微调数据
8
【openpyxl】获取xlsx所有的表名_python 读取xlsx的工作表名
9
网络工程师网络管理软件SNMPc软件的下载,安装和使用教程说明_snmp监控软件
10
游戏行业网络安全:挑战、防御与实践
当前位置:
article
> 正文
PHP中PDO扩展库总结_pdo php extension
作者:小舞很执着 | 2024-07-21 01:49:23
赞
踩
pdo php extension
一.PDO作用
1.PDO(php data object)扩展类库为php访问数据库定义了轻量级的,一致性的接口
2.PDO提供了一个数据库访问抽象层,无论你使用了什么样的数据库,都可以通过一致的
函数执行查询和获取数据,大大简化了数据库的操作,并能够屏蔽不同数据库之间的差异
使用pdo可以方便的进行跨数据库程序的开发,以及不同数据库之间的移植
二.开启PDO扩展
1.使用PDO,需要加载pdo扩展库,请确定php.ini开始数据库扩展
extension_dir = "F:/wamp/php-5.4.45/ext"
extension=php_pdo.dll
extension=php_pdo_mysql.dll
2.重启apache服务
3.使用
extension_loaded()
函数可以检测Mysqli库扩展是否开启
三.使用PDO操作数据库
在PHP脚本中使用PDO操作数据库的步骤:
链接数据库服务器并选择数据库
设置使用异常的错误模式
设置字符集
准备并执行sql语句
处理结果集
四.链接Mysql,并选择数据库
new PDO('DSN','用户名','密码');
DSN(Data Source Name)数据源名称包含了请求链接到数据库信息
通常,一个DSN由PDO驱动名,紧随其后跟着冒号,以及具体的PDO驱动的链接语法组成:
mysql:host=127.0.0.1;port=3306;dbname=链接的数据库名
PDOException 异常类 代表一个由PDO产生的错误
getMessage() 获取错误信息
例:
try {
$pdo=new PDO("mysql:host=127.0.0.1;port=3306;dbname=eshop","root","123456");
} catch (PDOException $e) {
echo '数据库连接错误: ' . $e->getMessage();
}
五.设置使用异常的错误模式
PDO::getAttribute() 取回一个数据库链接的属性
PDO::setAttribute() 设置属性
PDO::ATTR_ERRMODE:错误模式
PDO::ERRMODE_SILENT: 仅设置错误代码,不提示
PDO::ERRMODE_WARNING: 引发 E_WARNING 错误
PDO::ERRMODE_EXCEPTION: 抛出 exceptions 异常
PDO::exec()
执行SQL为
insert update dalete
等操作语句 正确将返回受影响的行数,错误将
返回false
PDO::query()
执行SQL为
select、show
等查询语句,正确执行将返回资源结果集对象,错误执行
将返回false
六.处理资源结果集
setFetchMode(PDO::FETCH_NUM|PDO::FETCH_ASSOC|PDO::FETCH_BOTH) 设置结果集中数组的格式
FETCH_NUM 索引数组
FETCH_ASSOC 关联数组
FETCH_BOTH 关联|索引 数组
fetch()
从结果集中抽取一行作为数组返回 没有则返回false
fetchAll()
从结果集中抽取所有记录
七.处理非查询语句
lastinsertid()
在插入纪录时,返回最后插入记录的主键ID
八.pdo预处理
预处理好处:仅需解析一次,但可以用相同或不同的参数执行多次
可以确保不会发生SQL注入,提高安全性
1.先new出来一个数据库对象
例:$pdo=new PDO("mysql:host=127.0.0.1;port=3306;dbname=yhshop",'root','123456');
2.设置汉字编码
$pdo->exec("set names utf8"
);
3.准备要执行SQL语句
PDO::prepare() 准备一个SQL语句并返回一个语句对象
例:$staement=$pdo->prepare(insert into test(name,pwd,mobile) values(?,?,?));
别名形式(适合参数多)
例:$staement=$pdo->prepare(insert into test(name,pwd,mobile) values(:name,:pwd,:mobile));
4.绑定参数
bindParam(占位名[?的话就是用1,2,3|:name,:pwd的话就是':name','pwd'],要赋值的变量名,变量数据类型) 绑定一个参数到指定的变量名
变量数据类型:
PDO::PARAM_STR 字符串型
PDO::PARAM_INT 整型
PDO::PARAM_BOOL 布尔类型
POD::PARAM_NULL null数据类型
POD::PARAM_LOB 大对象数据类型
PDO赋值 数据类型不会强制转换
Mysqli赋值 数据类型会强制转换
例:
$staement->bindParam(1,$username,PDO::PARAM_STR);
$staement->bindParam(2,$password,PDO::PARAM_STR);
5.数据赋值
例:
$username='小六';
$password=md5(123456);
6.执行SQL语句
execute()
执行一条预处理语句 可以在函数里直接赋值 写成数组
rowCount()
返回受上一条SQL语句影响的行数 没有参数
别名形式
绑定参数
$statement->bindParam(':username',$username,PDO::PARAM_STR);
$statement->bindParam(':password',$password,PDO::PARAM_STR);
数据赋值
$username='yh002';
$password=md5('123');
执行SQL
$statement->execute(array('username'=>$username,'pwd'=>$password));
也可以不绑定参数在执行SQL时直接赋值
$statement->execute(array('pwd'=>md5('123'),'username'=>'yh002'));
九.pdo事物处理
事物:将多条sql操作(增删改)作为一个操作单元,要么成功要么失败
被操作的表必须是innoDB类型
设置表类型:alter table yh_admin engine=innodb;
关闭事物处理
set autocommit=0;
setAttribute()
设置一个语句属性,当前没有通用的属性可以设置,只有驱动属性:
PDO::ATTR_AUTOCOMMIT
如果此值为false PDO将试图禁用自动提交以便数据库连接一个事物
开启事物
start transaction;
beginTransaction()
启动一个事物 没有参数
提交事物
commit;
commit()
提交一个事物 没有参数
回滚事物
rollback;
rollback()
回滚一个事物 没有参数
异常处理
例:throw new PDOException('事务处理失败,请重新尝试');
throw 是明确的抛出异常
catch 是用来处理异常错误
十.大数据对象的处理
保存
$dbh= new PDO('mysql:dbname=testdb;host=localhost', 'root', '123456');
$stmt = $db->prepare("INSERT INTO images(mimetype,data) VALUES (?, ?)");
//使用fopen()函数打开上传的文件
$fp = fopen($_FILES['file']['tmp_name'], 'rb');
//将上传文件的MIME类型绑定到第一个参数中
$stmt->bindParam(1, $_FILES['file']['type']);
//将上传文件的二进制数据和第二个参数绑定
$stmt->bindParam(2, $fp, PDO_PARAM_LOB);
$stmt->execute();
bindParam() 绑定一个参数到指定变量名
bindColumn() 绑定一列到一个 PHP 变量
读取
$db = new PDO('mysql:dbname=testdb;host=localhost', 'root', '123456');
$stmt = $db->prepare("SELECT mimetype,data FROM images WHERE id=?");
//通过表单中输入的ID值和参数绑定,并执行查询
$stmt->execute(array($_GET['id']));
//获取结果集中的大数据类型和文件数据
list($type, $data) = $stmt->fetch();
header("Content-Type: $type");
//将从表中读取的大文件类型作为合适的报头发送
echo $data;
本文内容由网友自发贡献,转载请注明出处:
https://www.wpsshop.cn/w/小舞很执着/article/detail/859211
推荐阅读
article
共享
文件
时提示“将
安全性
信息
应用
到以下
对象
时发生错误”...
在给某
文件
夹设置用户权限时发生错误,提示”将
安全性
信息
应用
到以下
对象
时发生错误”,点击继续其它子
文件
及
文件
夹依然如此。故...
赞
踩
article
H5 静态
页面
跳转
微信
小
程序
_一个静态
页面
打开
小
程序
...
H5 静态
页面
跳转
微信
小
程序
_一个静态
页面
打开
小
程序
一个静态
页面
打开
小
程序
...
赞
踩
article
编写
定时
清理
docker
容器
日志
脚本
_
docker
定时
清理
日志
...
一个log文件小到几G大到几时G,导致服务器磁盘被占满程序跑不动,开发要求需要每天一过24:00都给每个
日志
置空一下,不...
赞
踩
article
vi
编辑器
快捷
生成
main
函数
和基本框架_
vi
编译器设置c语言man
函数
快捷
方式
...
step1: 执行 sudo
vi
/etc/
vi
m/
vi
mrc (修改
vi
mrc需要管理员权限:sudo)step2:...
赞
踩
article
记录
些
MySQL
题集(
12
)...
记录
些
MySQL
题集(
12
)
记录
些
MySQL
题集(
12
)
MySQL
整体架构 MySQ...
赞
踩
article
K8s使用
RDMA
进行
高速通信
_
rdma
device
...
K8s使用
RDMA
进行
高速通信
_
rdma
device
rdma
device
...
赞
踩
article
k8s
infiniband
和 RoCE(RDMA over Converged Ethernet...
vendors 为设备厂商编号,注意这里不是 ibv_
dev
info 命令看到的vendor_id 的值,而是 lspc...
赞
踩
article
51
单片机
项目(
11
)——基于
51
单片机
的
多功能
万年历
_
51
单片机
万年历
...
低成本和简单性:
51
单片机
作为一种经济实惠和易于使用
的
微控制器,对于一些简单
的
万年历
应用而言,依然是一个合适
的
选择。实时...
赞
踩
article
包看包会
Stable
Diffusion
原理,新手也
能
看明白_
stable
diffusion
大
模型
...
VAE文件在
Stable
Diffusion
v1中使用,以改善眼睛和面部的绘画效果。它们是我们刚刚谈到的自编码器的解码...
赞
踩
article
AI
绘画
Stable
Diffusion
电商
教程
,
带你解析
电商
成功秘籍!...
大家好
,
欢迎回到我们的
电商
学习之旅!今天
,
我们将深入探讨“稳定扩散技术”以及它在
电商
领域的应用。准备好了吗?让我们开始吧...
赞
踩
article
《
数据结构
与算法》之
链
表
—
有序
链
表
_
有序
单
链
表
...
2、
有序
链
表
有序
链
表
是在单
链
表
的基础上对单
链
表
的
表
头节点插入进行修改,从
表
头开始根据插入值与
链
表
中原先存在的数据节点进行...
赞
踩
article
思科
HSRP
配置
...
1.
配置
设备基本信息包括接口ip、vlan、trunk、路由等
配置
·2.
配置
HSRP
//SW1
配置
sw1(config)...
赞
踩
article
c
语言
数据结构
系列,
单链
表
常见操作之几种
插入
和
删除
的实现_用
c
语言
来实现单恋
表
的
插入
,
删除
...
c
语言
数据结构
之
单链
表
1,定义一个
单链
表
1,不带头结点的
单链
表
2,带头结点的
单链
表
2,
单链
表
的基本操作1,
插入
1,按位...
赞
踩
article
PHP5
中
PDO
的简单使用_
pdo
array
...
PDO
(PHP Data Object) 是PHP 5新出来的东西,在PHP 6都要出来的时候,PHP 6只默认使用PD...
赞
踩
article
Java
SE
6.0
编程
指南
_
Java
SE
6.0
编程
指南
—— 学习笔记(2)...
一、表达式1.当对两个数值型数据进行运算时,运算的结果至少为int型;如果有一个级别比int型高,则运算结果的类型与类型...
赞
踩
article
Ubuntu
下的
定时
功能_
ubantu
删除
定时
任务
...
最近因为要部署服务器上的一个服务,但是该服务不太稳定,有时候会因为莫名其妙的原因退出后台进程,于是每次服务掉线的时候就要...
赞
踩
article
【附源码】
Python
:
人脸
实时
检测
与抓捕_
python
抓去
人脸
识别信息...
使用
Python
和OpenCV
检测
人脸
是一个常见的计算机视觉任务。本文代码将打开你的摄像头,并在窗口中显示实时视频流,同...
赞
踩
article
GEO
芯片
数据
处理、多芯片
数据
合并、差异分析、
核心
基因
提取、
核心
基因
与
免疫
细胞
相关性_如何查询肿瘤免...
下载探针矩阵probe.txt和平台注释ann.txt查看分组信息,复制对照组样本名称s1.txt和实验组样本名称s2....
赞
踩
article
Elasticsearch
(ES)
常用命令
整理_
elasticsearch
查看
索引
...
在前几篇文章大家主要进行
Elasticsearch
的入门学习,了解了它的基本概念和工作原理,也学习到Elasticsea...
赞
踩
article
【
GitHub
项目推荐--
大
模型
中
核心
算法
开源!】【转载】_
github
大
模型
教程...
接着,按照频率从高到低的顺序,将最常见的相邻字节或字符对合并成一个新的子词单元,并将其添加到词汇表
中
。由于
算法
是按照最
大
...
赞
踩
相关标签
微信小程序
小程序
javascript
docker
容器
运维
脚本
定时任务
编辑器
数据库
mysql
kubernetes
云原生
物联网
嵌入式硬件
面试
python
计算机视觉
人工智能
midjourney
深度学习
stable diffusion
AIGC
有序链表