zoukankan      html  css  js  c++  java
  • PDO--PHP Data Objects

    PDO的环境配置:开启支持PDO 在php.ini配置文件里开启:
    	extension=php_pdo.dll
    	extension=php_pdo_mysql.dll
    				
    	在PDO操作中涉及到类:PDO、PDOStatement(预处理对象)、PDOException(异常类)
    
    一、 PDO类的构造方法:
    ---------------------------------------------------------
      PDO __construct( string dsn 
    		[, string username 
    		[, string password 
    		[, array driver_options]]] );
     当中:dsn数据库连接信息如“mysql:host=localhost;dbname=库名”
    	  dsn的格式:”驱动名:host=主机名;dbname=库名“
          username:用户名
          password:密码
          driver_options:配置选项:
          如: PDO::ATTR_PERSISTENT=>true,是否开启持久链接
    	   *PDO::ATTR_ERRMODE=>错误处理模式:(能够是下面三个)(3)
    		PDO::ERRMODE_SILENT:不报错误(忽略)(0)
    		PDO::ERRMODE_WARNING:以警告的方式报错(1)
    		*PDO::ERRMODE_EXCEPTION:以异常的方式报错(推荐使用)。(2)
    
    $pdo =  new PDO("mysql:host=localhost;dbname=lamp36db","root","root");
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    其它方法:
    --------------------------------------------------------
    1. query($sql); 用于运行查询SQL语句。返回PDOStatement对象
    2. exec($sql);  用于运行增、删、改操作,返回影响行数;
    3. getAttribute(); 获取一个"数据库连接对象"属性。
    4. setAttribute(); 设置一个"数据库连接对象"属性。
    5. beginTransaction 开启一个事物(做一个回滚点)
    6. commit	提交事务
    7. rollBack	事务回滚操作。 
    8. errorCode	获取错误码   
    9. errorInfo	获取错误信息   
    10.lastInsertId  获取刚刚加入的主键值。
    11.prepare	创建SQL的预处理,返回PDOStatement对象
    12.quote	为sql字串加入单引號。
    
    
    预处理对象PDOStatement对象:
    =============================================
    我们能够通过PDO的方法来获取PDOStatement:
     1.PDO的query(查询sql)方法获取,用于解析结果集
     2.PDO的prepare(SQL)方法获取,用于处理參数式sql并运行操作。
    
    PDOstatement对象的方法:
    ----------------------------------------------------------------
    1、fetch() 返回结果集的下一行,结果指针下移,到头返回false 。
      	參数: 	PDO::FETCH_BOTH (default)、:索引加关联数组模式
    	       	PDO::FETCH_ASSOC、	   :关联数组模式
     	       	PDO::FETCH_NUM、		   :索引数组模式
    			PDO::FETCH_OBJ、		   :对象模式
    			PDO::FETCH_LAZY		   :全部模式(SQL语句和对象)
    			
    2、fetchAll() 通过一次调用返回全部结果,结果是以数组形式保存
          	參数:PDO::FETCH_BOTH (default)、
    		PDO::FETCH_ASSOC、
    		PDO::FETCH_NUM、
    		PDO::FETCH_OBJ、
    		PDO::FETCH_COLUMN表示取指定某一列,
    		如:$rslist = $stmt->fetchAll(PDO::FETCH_COLUMN,2);取第三列
    3、execute() 	负责运行一个准备好了的预处理语句 
    4. fetchColumn()返回结果集中下一行某个列的值
    5. setFetchMode()设置须要结果集合的类型
    6. rowCount()  	返回使用增、删、改、查操作语句后受影响的行总数
    7. setAttribute()为一个预处理语句设置属性
    8. getAttribute()获取一个声明的属性
    9. errorCode() 	获取错误码
    10. errorInfo() 获取错误信息
    11. bindParam() 将參数绑定到对应的查询占位符上
        bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type [, int $length [, mixed $driver_options ]]] ) 当中: $parameter:占位符名或索引偏移量 &$variable:參数的值,须要按引用传递也就是必须放一个变量
        当中參数:$data_type:数据类型PDO::PARAM_BOOL/PDO::PARAM_NULL/PDO::PARAM_INT/PDO::PARAM_STR/
      	 				  PDO::PARAM_LOB/PDO::PARAM_STMT/PDO::PARAM_INPUT_OUTPUT
             $length:指数据类型的长度 $driver_options:驱动选项。
    12. bindColumn() 用来匹配列名和一个指定的变量名,这样每次获取各行记录时,会自己主动将对应的值赋给变量。
    13. bindValue() 将一值绑定到对应的一个參数中
    14. nextRowset() 检查下一行集
    15. columnCount() 在结果集中返回列的数目
    16. getColumnMeta() 在结果集中返回某一列的属性信息
    17. closeCursor() 关闭游标,使该声明再次运行
    
    
    在PDO中參数式的SQL语句有两种(预处理sql):
       1.insert into stu(id,name) value(?,?);	//?号式(适合參数少的)		
       2.insert into stu(id,name) value(:id,:name);		// 别名式(适合參数多的)
    在PDO中为參数式SQL语句赋值有三种:
       1.使用数组 
    	 $stmt->execute(array("lamp1404","qq2"));
     	 $stmt->execute(array("id"=>"lamp1404","name"=>"qq2"));	
       2.用法单个赋值
    	 $stmt->bindValue(1,"lamp1901");	
    	 $stmt->bindValue(2,"qq2");
    	 $stmt->execute();
    
    	 $stmt->bindValue(":id","lamp1901",PDO::PARAM_STR);	 //带指定类型
    	 $stmt->bindValue(":name","qq2",PDO::PARAM_STR);
    	 $stmt->execute();
    	 
       3. 用法绑定变量
    	 $stmt->bindParam(":id",$id);		
    	 $stmt->bindParam(":name",$name);
    	 $id="lamp1401";
    	 $name="qq2";
         $stmt->execute();
    	 
    事务处理
    -----------------------------------------------	
    	事务:将多条sql操作(增删改)作为一个操作单元,要么都成功,要么都失败。(假设一次插入多条数据,一条运行失败,数据回滚,全部删除)-----
    	
    4.  PDO对事务的支持
    		第一:被操作的表必须是innoDB类型的表(支持事务)
    			MySQL经常使用的表类型:MyISAM(非事务)增删改速度快、InnodB(事务型)安全性高
    			//更改表的类型为innoDB类型
    			mysql> alter table stu engine=innodb;
    				Query OK, 29 rows affected (0.34 sec)
    				Records: 29  Duplicates: 0  Warnings: 0
    			//查看表结构
    			mysql> show create table stuG;   
    			   
    		第二:使用PDO就能够操作数据库了
    				使用到了PDO中的方法:
    					beginTransaction 开启一个事物(做一个回滚点)
    					commit		提交事务
    					rollBack	事务回滚操作。 
    		
    		使用情况:当做多条sql语句处理时(增删改),要求是都必须成功。


  • 相关阅读:
    HDU 1813 Escape from Tetris
    BZOJ 2276 Temperature
    BZOJ 4499 线性函数
    BZOJ 3131 淘金
    HDU 5738 Eureka
    POJ 2409 Let it Bead
    POJ 1286 Necklace of Beads
    POJ 1696 Space Ant
    Fox And Jumping
    Recover the String
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3867983.html
Copyright © 2011-2022 走看看