MySQL使用PDO获取结果集
<?php
//数据库信息
$dsn='mysql:host=127.0.0.1;dbname=php_pro;charset=utf8';
try {
//新建数据库连接(实例化PDO对象)
$pdo = new PDO($dsn, 'root', 'root');
}catch(PDOException $e){
// 获取PDOException接口错误信息
echo $e->getMessage();
}catch (Throwable $e) {
// 获取Throwable接口或其它错误信息
echo $e->getMessage();
}
//SQL语句(id字段作为条件,使用问号占位符预防注入)
$sql = "SELECT * FROM `users` WHERE `id`<=?";
//准备要执行的语句,返回PDOStatement对象
$res = $pdo->prepare($sql);
//绑定1个参数到问号占位符,多个问号按顺序绑定
$id = 14;
$res -> bindParam(1,$id);
//执行查询语句,成功时返回 TRUE,失败时返回 FALSE。
if($res->execute()){
// 使用PDO的fetchall以关联数组形式返回数据集
$res = $res->fetchAll(PDO::FETCH_ASSOC);
echo "----id----姓名----年龄----邮箱----<br>";
// 遍历结果集
foreach($res as $key => $vulue){
echo "----{$vulue['id']}----{$vulue['username']}----{$vulue['age']}----{$vulue['email']}----<br>";
}
}
结论
- 理解了如何使用pdo类的对象去连接数据库;
- 使用PDO对象中的prepare()方法获取PDOStatement对象;(注入防止手段有了初步了解)
- fetchall方法参数:
- PDO::FETCH_ASSOC 关联数组形式
- PDO::FETCH_NUM 数字索引数组形式
- PDO::FETCH_BOTH 两者数组形式都有,这是默认的
- PDO::FETCH_OBJ 按照对象的形式,类似于以前的mysql_fetch_object()
- PDO::FETCH_BOUND 以布尔值的形式返回结果,同时将获取的列值赋给bindParam()方法中指定的变量
- PDO::FETCH_LAZY 以关联数组、数字索引数组和对象3种形式返回结果。`