学习笔记:PDO

1

exec()和query()

PDO::exec()

只能执行insert update delete命令,返回值是影响的行数

PDO::query()

可以执行所有命令,不过建议只用来执行select,返回PDOStatement对象,可以理解为结果集

相同点

二者都可以设置通道编码 

2

PDO预处理步骤

a)构建预处理语句

如:insert into stu values(null,?,?),另外PDO支持这种格式,更直观insert into stu values(null,:name,:age);需要说明的是name和age并不一定和数据库字段名相同,可以理解为这只是一个占位标识而已.这条语句返回值是PDOStatement对象

b)绑定可变变量

可以使用bindParam(":name",$name),需要强调的是第二个参数只能是变量,第一个参数也可以用数字表示,表示第几个参数,从1开始.

绑定变量也可以用bindValue()方法,二者的区别是,bindValue的第二个参数必须是常量,如20

c)执行预处理语句execute()

如第一条笔记所说,如果执行的查询语句,返回的是PDOStatement类的类对象,预处理执行查询语句得到的结果集会直接放到这条语句的返回值中,比如$stmt = excute(...),结果集放到了$stmt中了

d)在取出结果时

可以使用$stmt->fetch(PDO::FETCH_BOUND),但是需要注意的是,如果用FETCH_BOUND前面必须对参数进行绑定,绑定方法:

$stmt->bindColumn("id",$id);

$stmt->bindColumn("name", $name);

此绑定方法只能用于结果取值,不能用于构建预处理语句的参数绑定

3

PDO事务处理

步骤

a)关闭自动提交

b)开启错误处理

c)try可以更好的处理错误和异常

d)开启事务处理$pdo->beginTransaction()

e)编写sql语句

f)执行语句,并获取影响的行数

g)验证是否是期望效果

h)提交或者回滚

i)开启自动提交(非必须)

j)释放pdo占用的内存

4

PDO取出数据

fetch(PDO::FETCH_ASSOC);之所以用双引号,是因为FETCH_ASSOC是PDO类的静态属性

fetchColumn(1);取得一行数据中的一列,比较省资源

附:

1

PDOStatement类

用于:获取结果集和实现预处理

原创作品,请勿转载,如确需转载请保持文章完整并注明出处,谢谢合作。

(许坤,php工程师,PHP工程师,互联网研发工程师,软件工程师)

原文地址:http://www.cnblogs.com/quinnxu/archive/2012/07/18/2597309.html

原文地址:https://www.cnblogs.com/quinnxu/p/2597309.html