pdo的简单介绍和使用
1,PDO的定义;php data object(php数据对象);
2,连接pdo的相关参数:$dsn、$user、$pass.
其中$dsn="mysql:host=$host;dbname=$dbname";
1)$dsn:数据源,字符串类型 2)$user=数据库连接账户名
3)$pass=数据库连接密码
3,pdo支持的数据库多达12种以上,用于连接不同的数据库;便于项目后期的扩展和数据库更改
4,PDOStatement类的作用:解析结果集,实现预处理,事务处理等特殊功能
5,PDOException类:主要用于捕获pdo异常
6,PDO类:pdo的核心,用于数据库的连接、发送sql语句等
7,关闭pdo的方法:unset($pdo)、$pdo=null;
8, PDO中的执行操作
1)增删改:int PDO::exec(string $statement)
$sql->exec($sql);
执行sql语句并返回受影响的行数
返回最后一条插入的id:$pdo->lastInsertId();
2)查询操作:用到PDOStatement PDO::query(string $statement);
如:$stmt=$pdo->query($sql);获取查询结果集
$stmt->rowCount()获取总共条数
$stmt->columnCount()获取总列数(字段)
3)pdo中的遍历操作:操作有fetch()、fetchAll()
PDO::FETCH_ASSOC 把一条记录遍历到关联数组中
PDO::FETCH_NUM 索引数组
PDO::FETCH_BOTH 混合型数组
PDO::FETCH_OBJ 把一条记录遍历到对象中
PDO::FETCH_BOUND(bindColumn)
9,mysql预处理:在sql语句结构和形式相同的情况下,只有参数不同所采用的一种数据处理机制,其极大的减少了带宽的浪费
1)目的:为了节约服务器带宽,避免资源的浪费
2)基本语法:
MySQL中的预处理方法:{
创建预处理语句
prepare 预处理指令 from sql语句(inser/delete/update/select)
设置参数
set @value =value
执行预处理
execute 预处理指令
如:prepare stmt1 from 'insert into user values(null,?,?,?)';
set@user_name='itcast';
set@user_password='123456';
set@user_image='default';
execute stmt1 using @user_name,@user_password,@user_image;
}
10,PDO预处理{
$sql="insert/update/delete into 表名 values(null,?,?,?)"
$stmt=$pdo->prepare($sql)
//预处理语句中如果使用?这个特殊字符的话,那么接下来的出入数组就必须要使用枚举数组
$data=array(
0=>'第一个问号的内容',
1=>'第一个问号的内容',
2=>'第一个问号的内容',
)
$stmt->execute($data)
}
11,PDO中的事务处理:要么同时成功,如果有一方失败,则数据回滚
应用场景:涉及金钱交易的时候使用
1)
MYSQL中的事务处理:如果想实现事务处理,则数据表的引擎必须是innoDB
.......
$con->autocommit(false)//关闭自动提交功能
$sql1=".....";
$sql2=".....";
$res1=$con->query($sql1);
$res2=$con->query($sql2);
if($res1&&$res2){
$con->commit();//提交事务
$conn->autocommit(true);//开启自动提交功能
}else{
$conn->rollback();//执行回滚
}
2)PDO中的事务处理:
开启事务
bool PDO::beginTransaction(void)
提交事务
bool PDO::commit(void)
回滚事务
bool PDO::rollback(void)
12,PDO中的异常捕获
基本语法:
try{
}catch(Exception $e){
echo '错误号:'.$e->getCode();
echo '错误行号:'.$e->getLine();
echo '错误文本信息:'.$e->getMessage();
}
该方法只能捕获致命错误,同时可以设置属性实现捕获逻辑异常
语法:
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
PDO::ATTR_ERRMODE 错误级别
1)PDO::ERRMODE_SLIENT 常规错误,默认
1)PDO::ERRMODE_WARNING 警告错误
1)PDO::ERRMODE_EXCEPTION 异常错误
13,PDO中属性的设置和获取
1)知识点:
设置属性
bool PDO::setAttribute(int $attribute,mixed $value)
获取属性
mixed PDO::getAttribute(int $attribute)
2)常用属性
PDO::ATTR_AUTOCOMMIT:自动提交
1:自动提交
0:关闭自动提交
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0)//关闭自动提交
PDO::ATTR_CASE:结果集大小写
参数值:PDO::CASE_LOWER 结果集字段名称转化为大写
参数值:PDO::CASE_UPPER 结果集字段名称转化为大写
参数值:PDO::CASE_NATURAL 正常返回
$pdo->setAttribute(PDO::ATTR_CASE,PDO::CASE_LOWER)//设置结果集为小写
PDO::ATTR_PERSISTENT:长连接
注意长连接属性的设置,需要在连接数据库时设置
$data=array(PDO::ATTR_PERSISTENT=>true);
$pdo=new PDO($dsn,$user,$pass,$data);
pdo的简单介绍和使用的更多相关文章
- PHP5中PDO的简单使用
PHP5中PDO的简单使用 标签: php数据库mysql扩展extensionexception 2012-05-06 10:27 27753人阅读 评论(0) 收藏 举报 分类: PHP(6) ...
- 《PHP 5.5从零開始学(视频教学版)》内容简单介绍、文件夹
<PHP 5.5从零開始学(视频教学版)>当当网购买地址: http://product.dangdang.com/23586810.html <PHP 5.5从零開始学(视频教学版 ...
- [原创]关于mybatis中一级缓存和二级缓存的简单介绍
关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
- yii2的权限管理系统RBAC简单介绍
这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ...
- angular1.x的简单介绍(二)
首先还是要强调一下DI,DI(Denpendency Injection)伸手获得,主要解决模块间的耦合关系.那么模块是又什么组成的呢?在我看来,模块的最小单位是类,多个类的组合就是模块.关于在根模块 ...
- Linux的简单介绍和常用命令的介绍
Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...
- iOS-iOS开发简单介绍
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...
随机推荐
- Spring事务mysql不回滚:mysql引擎修改
若Spring中@Transactional 注解开启且配置没问题的话,很可能是mysql数据库引擎不支持. mysql引擎是MyISAM的话事务会不起作用,原因是MyISAM不支持事务和外键,改成支 ...
- maven工程 添加本地jar依赖
和第三方平台对接的时候要用到对方提供的一个jar包,jar包怎么直接添加到pom文件的依赖中呢? jar包一般都是公共的,要上传到私服仓库.我们都是直接登录私服,操作仓库. 登录私服可以在项目的pom ...
- HBase数据压缩算法编码探索
摘要: 本文主要介绍了hbase对数据压缩,编码的支持,以及云hbase在社区基础上对数据压缩率和访问速度上了进行的改进. 前言 你可曾遇到这种需求,只有几百qps的冷数据缓存,却因为存储水位要浪费几 ...
- RabbitMQ 1
RabbitMQ能做些什么? 消息系统允许软件.应用相互连接和扩展.这些应用可以相互链接起来组成一个更大的应用,或者将用户设备和数据进行连接.消息系统通过将消息的发送和接收分离来实现应用程序的异步和解 ...
- pm2管理node
一般直接npm start起的退出命令行就没了,node后台管理工具pm2目前比较流行. npm install -g pm2 pm2 list pm2 start bin/www --name de ...
- 正在执行的sql
//查询目前系统正在运行的sqlSELECT [Spid]=session_Id, [ecid], [Database]=DB_NAME(sp.dbid), [User] = nt_username, ...
- 微信小程序上拉下拉刷新
小程序提供了,onPullDownRefresh和onReachBottom两个事件函数监听下拉和上拉事件函数.提示加载中,取消加载中 效果: js文件 // pages/enterprise/ent ...
- 用c语言基本实现wc.exe功能
网址:https://github.com/3216005214/wc.exe wc项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿 ...
- Firefox 调试 JavaScript 代码
第一步 新建 html 或者 jsp 文件 文件内容 <!DOCTYPE html> <html> <head> <meta charset="u ...
- Numpy and Matplotlib
Numpy介绍 编辑 一个用python实现的科学计算,包括:1.一个强大的N维数组对象Array:2.比较成熟的(广播)函数库:3.用于整合C/C++和Fortran代码的工具包:4.实用的线性代数 ...