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程序.但是这里我想强调一下,前面的 ...
随机推荐
- python之集合及其方法---整理集
集合的定义: 由不同元素组成.一组无序排列的可hash值.集合中元素必须是不可变类型 集合的定义方式: 由大括号组成: 每个元素用逗号分隔: 元素书写不是key-value形式: 集合是由不同元素组成 ...
- Rust2018
Rust已经有2本中文书了 <<深入浅出Rust>> <<Rust编程之道>> 带着aync的rust 2019会更精彩 看async , 在这里htt ...
- 微信小程序如何接入?
1.线下扫码:小程序最基础的获取方式,是二维码.大家可以打开扫一扫,通过微信扫描线下二维码的方式进入小程序.这也是官方宣传中,最普遍的实用场景. 如何生成小程序导入码? 2.微信搜索 3.公众号关联 ...
- trunk端口配置错误导致环路
端口下 switchport mode trunk spannning-tree portfast 上述两个命令同时执行将导致环路
- Scrapy爬取猫眼《复仇者联盟4终局之战》影评
一.分析 首先简单介绍一下Scrapy的基本流程: 引擎从调度器中取出一个链接(URL)用于接下来的抓取 引擎把URL封装成一个请求(Request)传给下载器 下载器把资源下载下来,并封装成应答包( ...
- Codeforces Round #553 (Div. 2) B题
题目网址:http://codeforces.com/contest/1151/problem/B 题目大意:给定一个n*m的矩阵,问是否可以从每一行中选择一个数,使得这n个数异或大于0,如果可以还要 ...
- jq 字符串去除空格
1.去除首尾空格: var txt = $('#Txt').val().trim(); txt = txt.replace(/(^\s*)|(\s*$)/g, ""); 2.去除所 ...
- Spring整合quartz关闭,关闭Tomcat Servlet容器时内存泄漏
出错信息 22-Sep-2017 06:19:51.064 WARNING [main] org.apache.catalina.loader.WebappClassLoaderBase.clearR ...
- Nginx和PHP-FPM的启动、重启、停止脚本分享
这篇文章主要介绍了Nginx和PHP-FPM的启动.重启.停止脚本分享,脚本中包含start.stop.reload.restart等常用的管理方法,并可以加入系统服务然后使用servicem命令管理 ...
- python实现随机森林、逻辑回归和朴素贝叶斯的新闻文本分类
实现本文的文本数据可以在THUCTC下载也可以自己手动爬虫生成, 本文主要参考:https://blog.csdn.net/hao5335156/article/details/82716923 nb ...