作业要求:
1. PDO连接数据库的过程与参数设置
2. 如果创建PDO预处理对象: prepare()方法
3. bindParam()与bindValue()
4. execute()直接传参
5. fetch() 和 fetchAll()的区别与联系
6. bindColumn()的功能
1. PDO连接数据库的过程与参数设置
PDO 为PHP 数据对象
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。
PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。
数据库的连接过程主要为3个步骤
(1) 创建pdo对象,连接数据库
(2) 准备SQL语句,创建预处理对象
(3) 执行SQL语句
创建pdo对象 主要需要3个参数
(1) 数据库连接串:含数据库类型、数据库主机IP、端口和数据库名称
(2) 连接数据库的用户
(3) 连接数据库的密码
测试代码如下:
<?php $dbms = 'mysql'; //数据库类型 $host = '127.0.0.1'; //数据库主机IP或主机名 $port = '3306'; //数据库端口号 $dbName = 'php'; //使用的数据库 $user = 'root'; //数据库连接用户名 $pass = 'root'; //对应的密码 $dsn = "$dbms:host=$host;port=$port;dbname=$dbName"; try { $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象 echo "连接成功<br/>"; } catch (PDOException $e){ die ("数据库连接错误: ".$e->getMessage() . '<br/>'); } ?>
点击 "运行实例" 按钮查看在线实例
2. 如果创建PDO预处理对象: prepare()方法
prepare()方法:准备要执行的语句,并返回语句对象
3. bindParam()与bindValue()
bindParam() 绑定一个参数到指定的变量名
bindValue() 把一个值绑定到一个参数
代码如下:
$sql1 = 'select `id`, `name`, `position` from `staff` where `id`= :id and `age` = :age' ; $stmt1 = $dbh->prepare($sql1); $id = 3; $stmt1->bindParam(':id', $id, PDO::PARAM_INT) ; $stmt1->bindValue(':age', 50, PDO::PARAM_INT);
点击 "运行实例" 按钮查看在线实例
4. execute()直接传参
执行一条预处理语句
成功时返回 TRUE, 或者在失败时返回 FALSE。
代码:
$sql = 'select `id`,`name`,`position` from `staff` where `id` between :start and :stop'; $stmt = $pdo->prepare($sql); //将变量与sql语句模板中的命名占位符进行绑定 $id = 3; $res = $stmt->execute(['start'=>2 ,'stop'=>4]);
点击 "运行实例" 按钮查看在线实例
5. fetch() 和 fetchAll()的区别与联系
PDOStatement::fetch — 从结果集中获取下一行
PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组
代码:
$sql2 = 'select `id`, `name`, `position` from `staff`'; $stmt2 = $dbh->prepare($sql2); $stmt2->bindColumn('id', $id, PDO::PARAM_INT ); $stmt2->bindColumn('name', $name, PDO::PARAM_STR, 30); $stmt2->bindColumn('position', $position, PDO::PARAM_STR, 30); $stmt2->execute(); $stmt2->fetch(PDO::FETCH_ASSOC); echo 'ID : ' . $id . 'NAME : ' .$name . 'POSITION : ' .$position; echo '<br>'; $result = $stmt2->fetchAll(); foreach($result as $staff){ print_r($staff); echo '<br>'; } echo '<br>';
点击 "运行实例" 按钮查看在线实例
6. bindColumn()的功能
绑定一列到一个 PHP 变量
上面已经演示过了,即把一个列绑定到一个变量上,以便输出或加工。
$stmt2->bindColumn('id', $id, PDO::PARAM_INT ); $stmt2->bindColumn('name', $name, PDO::PARAM_STR, 30); $stmt2->bindColumn('position', $position, PDO::PARAM_STR, 30);
点击 "运行实例" 按钮查看在线实例