PDO预处理之参数绑定和列绑定

原创 2018-11-03 14:02:32 472
摘要:PDO查询中,2个绑定操作:参数绑定与列绑定; 参数绑定:bindParm() 和 bindValue(); bindParm(':占位符',变量,类型常量) 类型常量默认为字符串 bindValue(':占位符',值或变量,类型常量) 如果直接传值,可省略类型常量 execute([':占位符'=>值/变量]) :将参数以数组方

PDO查询中,2个绑定操作:参数绑定与列绑定;

参数绑定:bindParm() 和 bindValue();

bindParm(':占位符',变量,类型常量) 类型常量默认为字符串

bindValue(':占位符',值或变量,类型常量) 如果直接传值,可省略类型常量

execute([':占位符'=>值/变量]) :将参数以数组方式与SQL语句的占位符绑定

列绑定:

bindColumn('列名或索引',变量,变量类型,最大长度),如果是字符串类型,应该指出最大长度进行预分配

fetch() 与 while 解析遍历结果集

MySQL对游标查询支持不够完善,如果想在结果集中巡航,请把结果集解析到数组中进行

<?php
	// - 1 数据连接,创建PDO对象
	$pdo = new ('mysql:host=127.0.0.1;dbname=php_edu;','root','root');
	// - 2 执行预处理方法,创建预处理对象 STMT
		// :status 命名占位符
		$sql = "SELECT 'user_id','name','eamil' FROM 'user'  WHERE 'status' =:status";
		$stmt = $pdo->prepare($sql);
	// - 3 执行
		// 参数绑定
		$status = 1;
		// $stmt->bindParam(':status',$status,PDO::PARAM_INT);
		// bindParm() 和 bindValue()基本等价,区别在于第二个参数。
		// bindParm() 第二个参数只能传变量;
		// bindValue() 第二个参数 既能传变量也能传值,其余再无区别;
		$stmt->bindValue(':status',$status,PDO::PARAM_INT);
		$stmt->execute();
	// - 4 遍历结果集:通常用 foreach() 结构
		$stmt ->bindColumn(1,$user_id,PDO::PARAM_INT);
		$stmt ->bindColumn(2,$name,PDO::PARAM_STR,20);
		$stmt ->bindColumn(3,$eamil,PDO::PARAM_STR,100);


		$rows =[];
		while ($row=$stmt->fetch(PDO::FETCH_BOUND)) {
			echo $user_id,$eamil,$name,'<br>';
			// 将变量转为数组;compact传值:传变量名组成的字符串
			$rows [] = compact('user_id','name','eamil');

		}
	// - 5 释放结果集
		$stmt = null;
	// - 6 关闭连接
		$pdo = null;

?>


批改老师:韦小宝批改时间:2018-11-03 14:06:03
老师总结:写的很棒!Pdo链接数据库还是很重要的!继续加油吧!看好你哦!

发布手记

热门词条