PHP的PDO
PDO中包含三个预定一类:PDO、PODStatement和PDOException。
1.PDO类
PDO类代表一个PHP和数据库之间的连接,PDO类所拥有的方法如下:
PDO:构造器,构建一个新的PDO对象。
beginTransaction:事务开始。
commit:提交事务
errorCode:从数据库返回一个错误代号。
errorInfo:从数据库返回一个含有错误信息的数据。
exec:执行一条sql语句并还回影响的行数
getAttribute:返回一个数据库连接属性。
lastInsertId:返回最新插入到数据库的行id
prepare:为执行准备一条sql语句,返回语句执行后的联合结果集(PDOStatement)。
query:执行一条sql语句并返回结果集
quote:返回添加引号的字符串,使其可以用于sql中
rollBack:事务回滚
setAttribute:设置一个数据库连接属性
2.PDOStatement类
PDOStatement类代表一条预处理语句以及语句执行后的联合结果集合,拥有的方法:
bindColumn:绑定一个PHP变量到结果集中的输出序列。
bindParam:绑定一个PHP变量到一个预处理语句中的参数
bindValue:绑定一个值到预处理语句中的参数
closeCursor:关闭游标,是语句可以再次执行。
columnCount:返回结果集中的列的数量
errorCode:从语句中返回一个错误的代号
errorInfo:从语句中返回一个包含错误信息的数组
execute:执行一条预处理语句
fetch:从结果集中去除一行
fetchAll:从结果集中取出一个包含所有行的数组
fetchColumn:返回结果集中某一列中的数据。
getAttribute:返回一个PDOStatement属性
getColumnMeta:返回结果集中某一列的结构。
nextRowset:返回下一个结果集
rowCount:返回sql语句执行后影响的行数
setAttribute:设置一个PDOStatement属性
setFetchModel:为PDOStatement设定获取数据的方式。
3.PDOException
PDOException是对exception的简单从写。
使用PDO 案例1:
<?php
try{
$dsn='mysql:host=localhost;dbname=shen';//设置PDO的数据源
$db=new PDO($dsn,'root','rootroot');//构造方法
//设置异常
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$db->exec("set names utf8");
$sql = "insert into a2(name) values('asdf')";
$db->exec($sql);//执行语句
//使用预处理
$insert = $db->prepare('insert into a2(name) values(?)');
$insert->execute(array('王'));
$insert->execute(array('lisi'));
//查询结果
$sql='select name from a2';
$query = $db->prepare($sql);
$query->execute();
var_dump($query->fetchAll(PDO::FETCH_ASSOC)); }catch(PDOException $err){
echo $err->getMessage();
}
?>
案例2:绑定参数和预编译
<?php
try{
$dsn='mysql:host=localhost;dbname=shen';//设置PDO的数据源
$dbh=new PDO($dsn,'root','rootroot');//构造方法
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$name = '王';
$sth = $dbh->prepare('select name from a2 where name = :name');
$sth->bindparam(':name',$name);
$sth->execute();
var_dump($sth->fetchAll(PDO::FETCH_ASSOC));
$sth = $dbh->prepare('select * from a2 where name = ?');
$sth->bindparam(,$name,PDO::PARAM_STR);
$sth->execute();
var_dump($sth->fetchAll(PDO::FETCH_ASSOC)); }catch(PDOException $err){
echo $err->getMessage();
}
?>
在mysql的应用中,为了防止注入共计,通常使用intval,addslashes等函数对值进行转义,转变成sql中合法的类型,这种方法比较复杂,而使用PDO的bindParam方法就变得比较简单,只需要在函数中指定第三个参数,就可以把值转换为需要的类型并拼接到原先的语句中。
案例3:事务处理
事务一般分为三步
1.开始事务
2.执行事务中需要执行的sql语句
3.提交事务 完成事务。
<?php
try{
$dsn='mysql:host=localhost;dbname=shen';//设置PDO的数据源
$db=new PDO($dsn,'root','rootroot');//构造方法
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();//开始事务
//开始执行sql语句
$db->commit();//提交事务 结束 }catch(PDOException $err){
echo $err->getMessage();
}
?>
PHP的PDO的更多相关文章
- 比Mysqli操作数据库更简便的方式 。PDO
下面来说一下PDO 先画一张图来了解一下 mysqli是针对mysql这个数据库扩展的一个类 PDO是为了能访问更多数据库 如果出现程序需要访问其他数据库的话就可以用PDO来做 PDO数据访问抽象层1 ...
- pdo的使用
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口. PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据. PDO随 ...
- PHP中PDO事务的使用方法
事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行. 在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操 ...
- PDO连接mysql数据库
1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...
- PDO概念 分析 练习
PDO 翻译过来叫做数据访问抽象层 它是一个数据访问的层面,实际上是一个类,也就是说所有操作数据库的代码,都是通过这个层面完成的 该图好理解大概就是这样一种模式 现在考虑的是能不能使用同一个类,上层代 ...
- PDO
'PDO'是数据访问抽象层'用mysqli类找到mysqli驱动根据驱动操作mysqli数据库'其他类找到sqlserver驱动根据驱动操作sqlserve数据库'PDO 访问其他数据库 PDO的用法 ...
- 前端学PHP之PDO预处理语句
× 目录 [1]定义 [2]准备语句 [3]绑定参数[4]执行查询[5]获取数据[6]大数据对象 前面的话 本来要把预处理语句和前面的基础操作写成一篇的.但是,由于博客园的限制,可能是因为长度超出,保 ...
- 前端学PHP之PDO基础操作
× 目录 [1]创建PDO [2]使用PDO [3]事务处理 前面的话 PDO(php data object)扩展类库为php访问数据库定义了轻量级的.一致性的接口,它提供了一个数据库访问抽象层,这 ...
- CANopen学习——PDO
查找资料时,发现一个很好的博客,博主剖析的通俗易懂 http://www.cnblogs.com/winshton/p/4897556.html PDO定义: 过程数据对象,用来传输实时数据.因为 ...
- PHP基础之PDO
简介 PDO(PHP Data Object)是指PHP数据对象,它定义了一个轻量级的一致接口来统一操作各种数据库.PDO提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方 ...
随机推荐
- Android下安装应用不成功解决
在手机上安装应用程序不成功,可以尝试把手机连接电脑,然后使用adb进行安装,adb安装命令: adb install Android_65632.apk 当出现: success!就表示成功,但当不成 ...
- svn 架设
1.yum install subversion openssl-devel -y 2. cd /data/svn 3. svnadmin create remote 4. 编辑conf 下 aut ...
- 【详解】ERP、APS与MES系统是什么?
ERP是什么?MES是什么?APS又是什么?无论他们有什么功能,对企业有什么意义,不过都是计算机在读写一些数据而已.实际上这一切的本质不过是数据在硬盘和内存中快速的读和写. ERP是--,APS是-- ...
- sed处理文本文件
SQL文件处理在以select 开通的行的上一行添加 explain analyze 并写入文本(-i)sed -i '/^select/i\explain analyze' test_load2.l ...
- win8.1中安装sql2014 0x800F0906 【 Error while enabling Windows feature : NetFx3, Error Code : -2146498298 】
安装sql2012 需要安装net3.5 没有的话 安装不成功 Error while enabling Windows feature : NetFx3, Error Code : -214649 ...
- String 与StringBuilder有什么区别
C# String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与 ...
- Excel应该这么玩——6、链接:瞬间转移
上一篇中提到通过命名表格来管理基础数据,这样会让数据更规范.如果有很多个基础数据表,需要查找或者修改其中的一个,可以通过名称框中下拉来定位. 但是当表格较多的时候,通过下拉选择的方式就不是很好定位了. ...
- infoq
1. I am Charles Humble and I am here at QCon London with Eva Andreasson from Cloudera. Eva, can you ...
- 修改项目生成Gemfile的模板
修改项目生成Gemfile的模板 gedit $rvm_path/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/generators/rails/app/ ...
- Android USB Host与HID通讯
前端时间捣鼓一个HID的硬件, 需要和android通信, 网上搜索了一圈,收获不小. 比较好的文章是: Android USB Host与HID通讯 Android Service创建US ...