pdo的用处,用法
PDO主要是用来对数据库进行访问的。PDO扩展为PHP访问数据库定义了一个轻量级的一致接口,不同数据库在访问时,采用相同方法名称,解决了连接数据库不统一问题。PDO扩展自身并不能实现任何数据库功能,必须使用一个具体数据库的PDO驱动来访问数据库服务。
pdo特点: 性能:比传统和原生访问数据库方式的效率高。
运行时扩展:pdo是模块化的。能在项目运行时加载数据库的驱动。
pdo的安装问题:
找到扩展配置位置,添加extension=php_pdo_mysql.dll。 如果代码存在,则把前面的分号注释去掉即可。extension=php_pdo.dll同理
重启apache
pdo的分类:
PDO类 : 主要用户数据库连接,发送sql语句
PDOStatement类 : 主要用来解释结果集,实现预处理,事物处理
PDOException类 : 主要用于捕获PDO异常
创建PDO对象:
变量名 = new PDO('数据库源','用户名','密码');
例如:$db = new PDO('mysql:host=localhost;port=3306;charset=utf8;dbname=stu','root','root');
exec()方法执行一条 SQL 语句,并返回受影响的行数,建议用于增删改的SQL执行操作
query()方法执行一条SQL语句,并返回结果集,建议用于查询的SQL执行操作
对应query()方法,可以通过setFetchMode(PDO::FETCH_ASSOC) 设置获取结果集的返回类型
setFetchMode方法的一个PDO参数可以有三个值:
PDO::FETCH_ASSOC 只返回关联数组。
PDO::FETCH_NUM 只返回数字下标数组。
PDO::FETCH_BOTH 默认的,关联数组+数字下标的数组。
fetch()方法从结果集中获取下一行 ,一次只能返回一行数据,获取不到数据返回false,通过参数可以设置结果集的返回类型
参数一共有以下几个:
PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组
PDO::FETCH_BOTH(默认):返回一个索引为结果集列名和以0开始的列号的数组
PDO::FETCH_BOUND:返回
TRUE
,并分配结果集中的列值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量。PDO::FETCH_CLASS:返回一个请求类的新实例,映射结果集中的列名到类中对应的属性名。
PDO::FETCH_INTO:更新一个被请求类已存在的实例,映射结果集中的列到类中命名的属性
PDO::FETCH_LAZY:结合使用 PDO::FETCH_BOTH 和 PDO::FETCH_OBJ,创建供用来访问的对象变量名
PDO::FETCH_NUM:返回一个索引为以0开始的结果集列号的数组
PDO::FETCH_OBJ:返回一个属性名对应结果集列名的匿名对象
fetchAll()方法返回一个包含结果集中所有行的数组 ,通过参数可以设置结果集的返回类型。想要获取结果集中单独一列的唯一值,需要将 PDO::FETCH_COLUMN
和 PDO::FETCH_UNIQUE
按位或。想要返回一个根据指定列把值分组后的关联数组,需要将 PDO::FETCH_COLUMN
和 PDO::FETCH_GROUP
按位或。
通过参数可以设置结果集的返回类型:
PDO::FETCH_COLUMN
:返回指定以0开始索引的列。PDO::FETCH_CLASS
:返回指定类的实例,映射每行的列到类中对应的属性名。PDO::FETCH_FUNC
:将每行的列作为参数传递给指定的函数,并返回调用函数后的结果。
rowCount()方法 返回受上一个 SQL 语句影响的行数
prepare()方法生成一个PDOStatement对象,查询不会立即执行,而是预处理
例如: $stmt = $db->prepare("select * from test");
execute()方法执行一条预处理语句
PDO的预处理:
预处理功能就是在SQL语句结构与形式相同的情况下,只有参数不同所采用的一种数据处理机制,其极大的减少了带宽的浪费。
参数绑定:
bindParam => 绑定一个参数到指定的变量名。绑定一个PHP变量到用作预处理的SQL语句中的对应命名占位符或问号占位符。这个方法只能绑定变量。
bindValue => 把一个值绑定到一个参数 。绑定一个值到用作预处理的 SQL 语句中的对应命名占位符或问号占位符。
特别注意:参数标识符。对于使用命名占位符的预处理语句,应是类似 :name 形式的参数名。对于使用问号占位符(?)的预处理语句,应是以1开始索引的参数位置。
PDO中的事务处理功能:
① 开启事务
PDO::beginTransaction
② 提交事务
PDO::commit
③ 回滚事务
PDO::rollBack
PDO异常处理:
异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。
PDO异常捕获:
try{
$db = new PDO(“mysql:host=localhost;dbname=test”,”root”,”root”);
}catch(PDOException $e){ //捕获得错误。
echo $e->getMessage(); //错误信息
}
PDO属性的获取与设置:
setAttribute => 设置数据库句柄属性。
getAttribute => 获取数据库连接的属性值
一些可用的通用属性:
PDO::ATTR_CASE:强制列名为指定的大小写。
PDO::CASE_LOWER:强制列名小写。
PDO::CASE_NATURAL:保留数据库驱动返回的列名。
PDO::CASE_UPPER:强制列名大写。
PDO::ATTR_ERRMODE:错误报告。
PDO::ERRMODE_SILENT: 仅设置错误代码。
PDO::ERRMODE_WARNING: 引发 E_WARNING 错误
PDO::ERRMODE_EXCEPTION: 抛出 exceptions 异常。
PDO::ATTR_ORACLE_NULLS (在所有驱动中都可用,不仅限于Oracle): 转换 NULL 和空字符串。
PDO::NULL_NATURAL: 不转换。
PDO::NULL_EMPTY_STRING: 将空字符串转换成
NULL
。PDO::NULL_TO_STRING: 将 NULL 转换成空字符串。
PDO::ATTR_STRINGIFY_FETCHES: 提取的时候将数值转换为字符串。
PDO::ATTR_STATEMENT_CLASS: 设置从PDOStatement派生的用户提供的语句类。 不能用于持久的PDO实例。
PDO::ATTR_TIMEOUT: 指定超时的秒数。并非所有驱动都支持此选项,这意味着驱动和驱动之间可能会有差异。比如,SQLite等待的时间达到此值后就放弃获取可写锁,但其他驱动可能会将此值解释为一个连接或读取超时的间隔。 需要 int 类型。
PDO::ATTR_AUTOCOMMIT (在OCI,Firebird 以及 MySQL中可用): 是否自动提交每个单独的语句。
PDO::ATTR_EMULATE_PREPARES 启用或禁用预处理语句的模拟。 有些驱动不支持或有限度地支持本地预处理。使用此设置强制PDO总是模拟预处理语句(如果为
TRUE
),或试着使用本地预处理语句(如果为FALSE
)。如果驱动不能成功预处理当前查询,它将总是回到模拟预处理语句上。 需要 bool 类型。PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (在MySQL中可用): 使用缓冲查询。
PDO::ATTR_DEFAULT_FETCH_MODE: 设置默认的提取模式。
pdo的用处,用法的更多相关文章
- php课程---php使用PDO方法详解(转)
本文详细分析了php使用PDO方法.分享给大家供大家参考.具体分析如下: PDO::exec:返回的是int类型,表示影响结果的条数. 代码如下: PDOStatement::execute 返回的是 ...
- 使用PDO连接多种数据库
在PHP 5之前,想要连接MySQL数据库就需要使用mysql或mysqli等一系列函数来操作数据库.例如,我们使用mysql系列数据库函数进行查询操作,对应的示例代码如下: <?php //创 ...
- php使用PDO方法详解
PDO::exec:返回的是int类型,表示影响结果的条数. 复制代码 代码如下: PDOStatement::execute 返回的是boolean型,true表示执行成功,false表示执行失败, ...
- go-mysql
1.GO语言实现的简单TCP服务代码 package main import ( "net" "fmt" ) var ( maxRead = 1100 msgS ...
- MongoDB固定集合
固定集合 MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头 ...
- PDO 用法学习
PDO: php data object数据库访问抽象层 基于驱动:1.安装扩展 php_pdo.dll2.安装驱动 php_pdo_mysql.dll linux 编译时参数:--with-pdo= ...
- php数据访问:pdo用法、事物回滚功能和放sql注入功能
PDO: 一.含义: 数据访问抽象层 二.作用 通过PDO能够访问其它的数据库 三. 用法: 1.造对象 ① $pdo ...
- mysql数据库查询pdo的用法
最早的php对mysql数据库查询是mysql和mysqli方法,后来php的新版本进一步封住了该方法,于是又pdo,抛开php框架,使用pdo查询数据,使用也是相当简便 <?php ini_s ...
- <php>PDO用法二
<?php //造PDO对象 $pdo = new PDO("mysql:dbname=mydb;host=localhost","root"," ...
随机推荐
- php函数substr_replace中文乱码的替代解决方法
$str = "中华人民共和国"; $len = mb_strlen($str,'utf-8'); if($len>=6){ $str1 = mb_substr($str,0 ...
- iis和apache共用80端口,IIS代理转发apache
为什么共用80端口应该不用多说了,服务器上程序运行环境有很多套,都想抢用80端口,所以就有了共用80端口的解决方案. 网上很多的教程一般都是设置APACHE使用默认80端口,代理转发IIS的网站,II ...
- PHP设计模式系列 - 外观模式
外观模式 通过在必需的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了调用对象的复杂性. 外观设计模式和建造者模式非常相似,建造者模式一般是简化对象的调用的复杂性,外观模式一般是简化含有很多逻 ...
- 一篇文章搞懂DOM
学习JavaScript肯定是会遇到DOM操作,那么什么是DOM?它又是干嘛用的?这篇文章为你揭晓答案. DOM是document object model的缩写,简称文档对象模型. 简单的说DOM是 ...
- rimraf命令 递归删除目录所有文件
使用webpack build文件项目时每次都会生成一个dist目录,有时需要把dist目录里的所以旧文件全部删掉, 除了可以使用rm -rf /dist/命令删除外,还可以使用rimraf /dis ...
- js 判断图片是否加载完成
1.根据url来加载图片: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /** * 加载图片,直到加载完成后才调用回调函数 * @param url 后面读取图片流的u ...
- DNS_PROBE_FINISHED_NXDOMAIN 问题解决
手动设置 (说明:如果您使用DNS有特殊设置,请保存设置后再进行操作) 1.打开[控制面板]→[网络连接]→打开[本地连接]→[属性]:2.双击[Internet 协议(TCP/IP)]→选择[自 ...
- Python之Pulsar框架使用
本文内容主要包含Pulsar的介绍和安装.初步使用.应用.常见示例等. 一. 介绍和安装 Pulsar是Python事件驱动并发框架:Pulsar具有高扩展性.高可用性的框架,它能够基于事件驱动的开源 ...
- python自动化之model进阶操作一
联合索引 遵循最左前缀索引 verbose_name 会在表名后面加s verbose_name_plural 就是表的原始名称 元信息 class UserInfo(models.Model): n ...
- C语言程序设计I—第十二周教学
第十二周教学总结(19/11-25/11) 教学内容 第4章 循环结构 4.5 循环结构程序设计 课前准备 在蓝墨云班课发布资源: PTA:2018秋第十二周作业4.5 分享码:B7FA52A13B6 ...