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的更多相关文章

  1. 比Mysqli操作数据库更简便的方式 。PDO

    下面来说一下PDO 先画一张图来了解一下 mysqli是针对mysql这个数据库扩展的一个类 PDO是为了能访问更多数据库 如果出现程序需要访问其他数据库的话就可以用PDO来做 PDO数据访问抽象层1 ...

  2. pdo的使用

    PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口. PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据. PDO随 ...

  3. PHP中PDO事务的使用方法

    事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行. 在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操 ...

  4. PDO连接mysql数据库

    1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...

  5. PDO概念 分析 练习

    PDO 翻译过来叫做数据访问抽象层 它是一个数据访问的层面,实际上是一个类,也就是说所有操作数据库的代码,都是通过这个层面完成的 该图好理解大概就是这样一种模式 现在考虑的是能不能使用同一个类,上层代 ...

  6. PDO

    'PDO'是数据访问抽象层'用mysqli类找到mysqli驱动根据驱动操作mysqli数据库'其他类找到sqlserver驱动根据驱动操作sqlserve数据库'PDO 访问其他数据库 PDO的用法 ...

  7. 前端学PHP之PDO预处理语句

    × 目录 [1]定义 [2]准备语句 [3]绑定参数[4]执行查询[5]获取数据[6]大数据对象 前面的话 本来要把预处理语句和前面的基础操作写成一篇的.但是,由于博客园的限制,可能是因为长度超出,保 ...

  8. 前端学PHP之PDO基础操作

    × 目录 [1]创建PDO [2]使用PDO [3]事务处理 前面的话 PDO(php data object)扩展类库为php访问数据库定义了轻量级的.一致性的接口,它提供了一个数据库访问抽象层,这 ...

  9. CANopen学习——PDO

    查找资料时,发现一个很好的博客,博主剖析的通俗易懂 http://www.cnblogs.com/winshton/p/4897556.html   PDO定义: 过程数据对象,用来传输实时数据.因为 ...

  10. PHP基础之PDO

    简介 PDO(PHP Data Object)是指PHP数据对象,它定义了一个轻量级的一致接口来统一操作各种数据库.PDO提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方 ...

随机推荐

  1. Python基础学习-Python中最常见括号()、[]、{}的区别

    Python中最常见括号的区别: 在Python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的Python基本内置数据类型. Python中的 ...

  2. linux--------------今天又遇到一个奇葩的问题,就是linux文件的权限已经是777了但是还是没有写入权限,按照下面的命令就解决了

    查看SELinux状态: 1./usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态 SELinux status:         ...

  3. 【Xpath学习】xpath都不会,说什么你做网站自动化测试的?

    嗯我确实不太会.感觉我写的随笔很渣,不一定对,大家不要被我误导了,最好不要看.我也尽量保证写出来都是对的. 首先这俩给我搞晕了 1. // 不管层级:  相对路径 2. /  care 层级: 表示到 ...

  4. LeetCode:Two Sum II

    public class Solution { public int[] twoSum(int[] numbers, int target) { int left = 0; int right = n ...

  5. (一)GPIO 编程实验 LED 流水灯控制

    7个寄存器 是R1-R16.(当然,里面有很多是分几个模式的,所以总共有37个)类似于单片机的R0-R7. GPXCON,GPXDAT等等是另外的寄存器,应该叫,特殊功能寄存器,类似于单片机的P0,P ...

  6. 使用Redux管理你的React应用(转载)

    本文转载自: http://www.cnblogs.com/matthewsun/p/4773646.html

  7. Ext.data.SimpleStore的使用方法

    Ext.data.SimpleStore简单数据存储器 参数:data:Array数组类型.fields:数组对应的字段名称.var data1=[1,"订单1","16 ...

  8. extjs 学习小窍门

    一.从form中获取field的三个方法: 1.Ext.getCmp('id'); 2.FormPanel.getForm().findField('id/name'); 3.Ext.get('id/ ...

  9. 浅谈php中使用websocket

    在PHP中,开发者需要考虑的东西比较多,从socket的连接.建立.绑定.监听等都需要开发者自己去操作完成,对于初学者来说,难度方面也挺大的,所以本文的思路如下: 1.socket协议的简介 2.介绍 ...

  10. javascript的类型、值和变量

    js的类型有多种分类,原始类型(数值,字符串,布尔值,null,undefined)和对象类型(object,String,Number,RgbExp等),或者是拥有方法的类型(object,Stri ...