zoukankan      html  css  js  c++  java
  • 学习笔记: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

  • 相关阅读:
    线段树 by yyb
    【SYZOJ279】滑稽♂树(树套树)
    【BZOJ2806】Cheat(后缀自动机,二分答案,动态规划,单调队列)
    【BZOJ2733】永无乡(线段树,并查集)
    【BZOJ4991】我也不知道题目名字是什么(线段树)
    【BZOJ4999】This Problem Is Too Simple!(线段树)
    【BZOJ1858】序列操作(线段树)
    【BZOJ1835】基站选址(线段树)
    【BZOJ2962】序列操作(线段树)
    【BZOJ1558】等差数列(线段树)
  • 原文地址:https://www.cnblogs.com/quinnxu/p/2597309.html
Copyright © 2011-2022 走看看