摘要:<?php /** * PDO查询操作(二) * 参数绑定:bindParm()和bindValue * fetch()与while解析遍历结果集 * MySql对游标查询支持不够完善,如果想在结果集中循环,请把结果集解析到数组中进行 */ //连接数据库 $pdo =
<?php
/**
* PDO查询操作(二)
* 参数绑定:bindParm()和bindValue
* fetch()与while解析遍历结果集
* MySql对游标查询支持不够完善,如果想在结果集中循环,请把结果集解析到数组中进行
*/
//连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php_edu','root','root');
//准备sql 并创建预处理对象
$sql = "SELECT `user_id`,`name`,`sex`,`email`,`create_time` FROM `user` WHERE `status` = :status;";
$stmt = $pdo->prepare($sql);
//执行
$stmt->execute([':status'=>1]);
//遍历
$rows = [];
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$rows[] = $row;
}
$pdo = null;
$stmt=null;
?>
<style>
table{ border: 1px solid #ddd; border-collapse: collapse}
table,th,td {
border: 1px solid #333;
}
</style>
<table>
<tr>
<th>ID</th>
<th>姓名</th>
<th>性别</th>
<th>邮箱</th>
<th>注册时间</th>
</tr>
<?php foreach ($rows as $row) : ?>
<tr>
<td><?php echo $row['user_id'] ?></td>
<td><?php echo $row['name'] ?></td>
<td><?php if($row['sex']=='0')echo '男'; else echo '女'; ?></td>
<td><?php echo $row['email'] ?></td>
<td><?php echo date('Y-m-d',$row['create_time']) ?></td>
</tr>
<?php endforeach; ?>
</table>参数绑定与列绑定输出:
<?php
/**
* PDO查询中的2个绑定操作:参数绑定与列绑定
* 参数绑定:
* bindParam(':占位符',变量,类型常量),类型常量默认为字符串
* bindValue(':占位符',值或变量,类型常量)如果直接传值,可省略类型常量;
* execute([':占位符'=>值/变量]):将参数以数组方式与SQL语句的占位符绑定
* 列绑定:
* bindColumn('列名或索引',变量,变量类型,最大长度),如果是字符串类型,应该指出最大长度进行预分配
*/
//连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php_edu','root','root');
//准备sql域名并预处理
$sql = "SELECT `user_id`,`name`,`email`,`sex`,`create_time` FROM `user` WHERE `status` = :status;";
$stmt = $pdo->prepare($sql);
//执行
//bindParam(),绑定一个参数(sql中的占位符)到指定的变量,注意必须是变量,并且该变量是引用类型
$status = 1;
$stmt->bindParam(':status',$status,PDO::PARAM_INT);
$stmt->execute();
//遍历
//列绑定
$stmt->bindColumn('user_id',$id,PDO::PARAM_INT);
$stmt->bindColumn('name',$name,PDO::PARAM_STR,20);
$stmt->bindColumn('email',$email,PDO::PARAM_STR,100);
$stmt->bindColumn('create_time',$ctime,PDO::PARAM_STR,100);
while($stmt->fetch(PDO::FETCH_BOUND)){
$rows[] = compact('id','name','email','ctime');
}
//关闭
$pdo = null;
$stmt=null;
?>
<style>
table{ border: 1px solid #ddd; border-collapse: collapse}
table,th,td {
border: 1px solid #333;
}
</style>
<table>
<tr>
<th>ID</th>
<th>姓名</th>
<th>邮箱</th>
<th>注册时间</th>
</tr>
<?php foreach ($rows as $row) : ?>
<tr>
<td><?php echo $row['id'] ?></td>
<td><?php echo $row['name'] ?></td>
<td><?php echo $row['email'] ?></td>
<td><?php echo date('Y-m-d',$row['ctime']) ?></td>
</tr>
<?php endforeach; ?>
</table>
批改老师:天蓬老师批改时间:2019-01-13 17:08:01
老师总结:pdo中的数据绑定一直是个重点, 也是一个难点, 其实从表中获取的数据就是字段段, 绑定有二个方向 , 读操作就是把结果列绑定到变量上, 写操作就是把数据绑定到变量上, 这样想就简单多了, 对不对?