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