001 - PDO 用法详细解析

《PDO》
41、作用 :能够解决用户在需要使用不同的数据库的时候进行来回的切换,PDO能够自动的进行数据库的切换。
42、使用PDO
	a)Php.ini文件找开启PDO扩展
43、使用PDO操作数据库基本步骤
	a)连接认证
		i.$pdo = new PDO(“mysql:host=localhost;port=3306;dbname=project”,”root”,”root”);
			ii.dbname 是进入的数据库
	b)组织SQL语句
		i.$sql = “show tables”;
	c)发送SQL语句,接收执行结果
		i.$stmt = $pdo->query( $sql );
	d)从结果集中获取数据
		i.$stmt->fetch();
44、PDO常用函数
	a)stdClass		标准类 空类
	b)PDO:
		i.exec( $sql );				执行SQL语句,返回受影响的行数		(用于 增删改)
		ii.$stmt = query( $sql );		执行SQL语句,返回PDOStatement对象	(用于 查)
	c)PDOStatement(结果集)
		i.$stmt->fetch( );			返回一个关联数组+索引数组的集合
			1.参1		PDO::FETCH_ASSOC		只返回关联数组
			2.参2		PDO::FETCH_NUM			只返回索引数组
		ii.$stmt->fetchAll()			获取结果集所有内容(参数同fetch())
		iii.返回一个对象Object
			1.class Persion{		}
			2.$stmt->fetchObject( Persion)
		iv.bindColumn 和 fetch	绑定一列到一个变量
			1.$stmt->bindColumn(‘s_name’,$name);
			2.$stmt->bindColumn( 3 ,$number);    //注意:索引从1开始
			3.$stmt->fetch( );
			4.echo $name,$number
	d)PDO预处理
		i.:s_name  这些 可以全用 ? 号代替(绑定数据时 就用索引值);
		ii.使用数组指定预处理变量
			1.步骤:
				a)$sql = “insert into pro_student values(null,:s_name,:s_num,:s_gender,:s_age,:c_id)”;	//sql
				b)$stmt = $pdo->prepare( $sql );	//发送预处理
				c)给预处理绑定数据
					i.$arr = array(
					ii.   ‘:s_name’=>’房祖名’,
					iii.   ‘:s_num’=>’itcast0001’,
					iv.   ‘:s_gender’=>’男’,
					v.   ‘:s_age’=>’28’,
					vi.   ‘:c_id’=>’2’,
					vii.)
				d)$stmt->execute( $arr );		//执行预处理
		iii.通过绑定变量的形式
			1.步骤
				a)$sql = “insert into pro_student values(null,:s_name,:s_num,:s_gender,:s_age,:c_id)”;	//sql
				b)$stmt = $pdo->prepare( $sql );	//发送预处理
				c)给预处理绑定数据
					i.$name = “李莫愁”;
					ii.$num= “itcast0002”;
					iii.$gender = “女”;
					iv.$age = “30”;
					v.$c_id = “3”;
					vi.//将变量绑定给预处理
					vii.$stmt->bindParam(‘:s_name’,$name);
					viii.$stmt->bindParam(‘:s_num’,$num);
					ix.$stmt->bindParam(‘:s_gender’,$gender);
					x.$stmt->bindParam(‘:s_age’,$age);
					xi.$stmt->bindParam(‘:c_id’,$c_id);
				d)$stmt->execute(  );		//执行预处理
	e)PDO事务处理
		i.事务处理就是  增删改
		ii.注意:数据表的存储引擎必须是 innoDB
		iii.事务处理流程
			1.$pdo = new PDO(‘mysql:host=localhost;port=3306;dbname=project’,’root’,’root’);	//连接认证
			2.$res = $pdo->beginTransaction();		//开启事务
			3.事务处理
				a)$sql = “updata pro_student set s_age=28 where s_id=20”;
				b)$lines = $pdo->exec( $sql );	//返回受影响的行数
				c)$sql = “select * from pro_student where s_id=20”;
				d)$stmt = $pdo->query( $sql );
				e)$stmt->fetch(PDO::FETCH_ASSOC);
			4.提交事务
				a)if( $links ){
				b)    $pdo->commit();	//更新成功
				c)}else{
				d)    $pdo->rollBack();	//更新失败   回滚数据
				e)}
	f)PDO 属性设置
		i.设置PDO在处理数据的过程中采用什么方式去处理
		ii.PDO::getAttribute();		//获取属性
		iii.PDO::setAttribute();		//设置属性		
		iv.示例:
			1.$pdo = new PD(‘mysql:host=localhost;port=3306;dbname=project’,’root’,’root’);	//连接认证
			2.$peo->getAttrbute(PDO::ATTR_AUTOCOMMIT);		//获取 自动提交属性
			3.$pdo->setAttrbute(PDO::ATTR_AUTOCOMMIT,0)		//设置 关闭自动提交
		v.参数记忆:
			1.PDO::ATTR_CASE	强制列名为指定的大小写
				a)PDO::CASE_LOWER		强制小写
				b)PDO::CASE_UPPER		强制大写
		vi...... 更多请参考手册 ......
	g)PDO异常处理
		i.try{
		ii.    //设置错误处理模式(必须设置才能生效)
		iii.    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
		iv.    //一旦出错立即进入catch语句
		v.}catch(PDOException $e){
		vi.    $e->getTrace();  //获取完整的错误数据
		vii.    $e->getFile();   //获取错误文件
		viii.   $e->getLine();   //获取错误行号
		ix.    $e->getMessage();   //获取错误原因
		x.}
	h)反射:
		i.反射就是将其他类的结构给反应出来,从而可以对类的结构进行了解便于对类的使用
		ii.Reflection
		iii.reflectionClass::export(要反射的类名)
		iv.调用reflectionClass的静态方法
		v.var_dump( reflectionClass::export(‘PDO’) );
		vi
		vii.$rc = new ReflectionClass(‘PDO’);  //创建ReflectionClass对象
		viii.var_dump( $rc->getProperties() );  //获取全部属性
		ix.var_dump( $rc->getMothods() );   //获取全部方法
		x.var_dump( $rc->getConstants() );  //获取全部常量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值