批改状态:合格
老师批语:
PDO数据库连接、参数绑定等相关基础操作
1. PDO连接数据库的过程与参数设置
<?php
//连接数据库的过程,也是创建PDO对象的过程
//连接参数:
//1.数据源:数据库类型:服务器名称;默认数据库 如:'mysql:host=localhost;dbname=php'
//2.用户名:默认'root'
//3.密码:默认'root'
// 一、连接数据库(创建PDO对象的过程)
$dsn = 'mysql:host=127.0.0.1;dbname=php'; //数据源
$user = 'root'; //数据库主机用户名
$password = 'root'; //数据库主机密码
$pdo = new PDO($dsn,$user,$password); //新建一个PDO对象的方法来连接数据库
// try {} catch ()结构
/*try {
$pdo = new PDO($dsn,$user,$password);
} catch(PDOException $e) {
exit('数据库连接错误' . $e->getMessage());
}*/
//var_dump($pdo);
// 二、 操作数据库
$sql = 'SELECT `id`,`name`,`age` FROM `staff` WHERE `age`>35';
foreach($pdo->query($sql) as $value) {
echo '<pre>';
print_r($value);
}
// 三、关闭数据库连接
//方法1:
//unset($pdo);
//方法2:
$pdo = null;点击 "运行实例" 按钮查看在线实例
2.如何创建PDO预处理对象:prepare()方法
<?php
//1.连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
// 2.创建预处理对象(将SQL语句对象化)
$sql = 'SELECT * FROM `staff` WHERE `age` > :age AND `sex` = :sex'; //SQL语句模板 :age/ :sex这个叫命名点位符
$stmt = $pdo->prepare($sql); //$stmt: 预处理对象
//var_dump($stmt);
echo $stmt->queryString;
// 3.关闭连接
$pdo = null;点击 "运行实例" 按钮查看在线实例
3. bindParam()与bindValue(),execute()直接传参的运用
<?php
// 1. 连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
// 2. 创建预处理对象
$sql = 'SELECT `id`,`name`,`position` FROM `staff` WHERE `id`= :id';
$stmt = $pdo->prepare($sql);
// 3.执行一条预处理语句
//将变量 与SQL语句模板中的命名点位符进行绑定
//$id = 4;
//PDO::PARAM_INT是PDO常量,用来指定bindParam()参数的数据类型
//$stmt->bindParam(':id',$id,PDO::PARAM_INT);
//用bindValue()方法直接把值绑定到命名点位符
//$stmt->bindValue(':id',3,PDO::PARAM_INT);
//$res = $stmt->execute();
$res = $stmt->execute(['id' => 2]); //直接给execute()传参数的方式
if ($res === true) {
//执行成员,就打印出这个员工信息
//fetch()方法获取表中满足条件的第一个记录,并以一维数组的方式返回
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo '<pre>';
print_r($result);
}
// 4.关闭连接
$pdo = null;点击 "运行实例" 按钮查看在线实例
4. fetch() 和 fetchAll()的区别与联系 及bindColumn()的功能
<?php
// 1. 连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
// 2. 创建预处理对象
$sql = 'SELECT `id`,`name`,`position` FROM `staff` WHERE `id` BETWEEN :start AND :stop'; //sql语句模板
$stmt = $pdo->prepare($sql);
// 3.执行一条预处理语句
$res = $stmt->execute(['start'=>2,'stop'=>4]); //直接给execute()传参数的方式
//将结果集中的字段与变量进行绑定
$stmt->bindColumn('id',$id,PDO::PARAM_INT);
$stmt->bindColumn('name',$name,PDO::PARAM_STR,30);
$stmt->bindColumn('position',$position,PDO::PARAM_STR,30);
if ($res === true) {
//执行成员,就打印出这个员工信息
//fetch()方法获取表中满足条件的第一个记录,并以一维数组的方式返回。这个是一条记录
//fetchAll()方法返回所有满足条件的记录,并以二维数组的方式返回。这个是记录集合(多条记录)
/* $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($result as $val) {
echo '<pre>';
print_r($val);
}*/
//用循环语句 定制输出格式并且可以解决查询结果有大量数据撑爆内存的情况
while($stmt->fetch(PDO::FETCH_ASSOC)) {
echo '编号:' . $id . ',姓名:' . $name . ',职位:' . $position . '<br>';
}
}
// 4.关闭连接
$pdo = null;点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号