摘要:<?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中的数据绑定一直是个重点, 也是一个难点, 其实从表中获取的数据就是字段段, 绑定有二个方向 , 读操作就是把结果列绑定到变量上, 写操作就是把数据绑定到变量上, 这样想就简单多了, 对不对?