Correction status:qualified
Teacher's comments:
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;
点击 "运行实例" 按钮查看在线实例