视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
PDO--PHPDataObjects
2020-11-09 15:05:19 责编:小采
文档


PDO的环境配置:开启支持PDO 在php.ini配置文件中开启:extension=php_pdo.dllextension=php_pdo_mysql.dll在PDO操作中涉及到类:PDO、PDOStatement(预处理对象)、PDOException(异常类)一、 PDO类的构造方法:-------------------------------------------

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 stu\G; 
	 
	第二:使用PDO就可以操作数据库了
	使用到了PDO中的方法:
	beginTransaction 开启一个事物(做一个回滚点)
	commit	提交事务
	rollBack	事务回滚操作。 
	
	使用情况:当做多条sql语句处理时(增删改),要求是都必须成功。


下载本文
显示全文
专题