Correction status:Uncorrected
Teacher's comments:
PHP基础8
主要知识点
1)PDO 的运用 (PHP DATA OBJECT) PHP数据对象
2)PDO 的优势
* 1.PDO真正的以底层实现的统一接口数库操作接口,不管后端使用的是何种数据库,
* 如果代码封装好了以后,应用层调用基本上差不多的,当后端数据库更换了以后,应用层代码基本不用修改
* 2.PDO支持更高级的DB特性操作,如:存储过程的调度等,mysql原生库是不支持的.
* 3.PDO是PHP官方的PECL库,兼容性稳定性必然要高于MySQL Extension,可以直接使用 pecl upgrade pdo 命令升级.
* 4.PDO可以防止SQL注入,确保数据库更加安全
3)获取结果集记录数量的正确方式是什么?
* 获取结果集记录数量的正确方式是什么?
* 通过sql语句查询数据库某个表的总数居量
* (select count(*) from staff)
* 然后通过pdo的对象方法fetchColumn()获取总量
代码
db.php
<?php // PDO 连接数据库 $user = 'root'; $pass = 'root'; $dsn = 'mysql:host=127.0.0.1; dbname=php'; try { $pdh = new PDO($dsn, $user, $pass); echo '<h3>连接成功</3><br>'; } catch (PDOException $e) { die('Connect ERROR! : '. $e->getMessage()); }
demo2.php
<?php require './pdo/db.php'; // 新增 // $sql_add = "INSERT IGNORE `user` SET `user_name`= :name , `email`= :email, `password`= sha1(:password)"; // //创建预处理对象 // $stmt = $pdh->prepare($sql_add); // //绑定参数 // $data = ['name'=>'jack','email'=>'jack@163.com','password'=>'123456']; // $stmt->bindParam(':name',$data['name'],PDO::PARAM_STR); // $stmt->bindParam(':email',$data['email'],PDO::PARAM_STR); // $stmt->bindParam(':password',$data['password'],PDO::PARAM_STR); // // 执行 // if ($stmt->execute()) { // // 添加一条记录 // echo '<br>add: '.$stmt->rowCount().' count<br>'; // } else { // echo '<span style="color:red">fail</span><br>'.$stmt->errorInfo(); // exit(); // } // // 更新 // $sql_update = "UPDATE `user` SET `email`= :email, `password`= sha1(:password) WHERE `user_id`= :id"; // //创建预处理对象 // $stmt = $pdh->prepare($sql_update); // //绑定参数 // $data = ['id'=>3,'name'=>'jack','email'=>'jack@google.com','password'=>'123']; // $stmt->bindParam(':email',$data['email'],PDO::PARAM_STR); // $stmt->bindParam(':password',$data['password'],PDO::PARAM_STR); // $stmt->bindParam(':id',$data['id'],PDO::PARAM_INT); // // 执行 // if ($stmt->execute()) { // // 更新一条记录 // echo '<br>update: '.$stmt->rowCount().' count<br>'; // } else { // echo '<span style="color:red">fail</span><br>'.$stmt->errorInfo(); // exit(); // } // 查询 // $sql_sel = "SELECT `user_name`,`email` FROM `user` WHERE `user_id` >= :id"; // //创建预处理对象 // $stmt = $pdh->prepare($sql_sel); // //绑定参数 // $data = ['id'=>2,'name'=>'jack','email'=>'jack@google.com','password'=>'123']; // $stmt->bindParam(':id',$data['id'],PDO::PARAM_INT); // // 执行 // if ($stmt->execute()) { // // 查询结果 // while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { // echo var_export($row),'<br>'; // } // } else { // echo '<span style="color:red">fail</span><br>'.$stmt->errorInfo(); // exit(); // } // 删除 // $sql_del = "DELETE FROM `user` WHERE `user_id`= :id"; // //创建预处理对象 // $stmt = $pdh->prepare($sql_del); // //绑定参数 // $data = ['id'=>2,'name'=>'jack','email'=>'jack@google.com','password'=>'123']; // $stmt->bindParam(':id',$data['id'],PDO::PARAM_INT); // // 执行 // if ($stmt->execute()) { // // 查询结果 // echo '<br>delete: '.$stmt->rowCount().' count<br>'; // } else { // echo '<span style="color:red">fail</span><br>'.$stmt->errorInfo(); // exit(); // } /** * 获取结果集记录数量的正确方式是什么? * 通过sql语句查询数据库某个表的总数居量 * (select count(*) from staff) * 然后通过pdo的对象方法fetchColumn()获取总量 */ $sql_sum = "SELECT COUNT(*) FROM `staff`"; $stmt = $pdh->prepare($sql_sum); if ($stmt->execute()) { // 查询结果 echo '<br>总量: '.$stmt->fetchColumn().' 条<br>'; } else { echo '<span style="color:red">fail</span><br>'.$stmt->errorInfo(); exit(); } // 关闭连接 $stmt = null; $pdo = null;
总结
主要是对PDO 进行基础操作,以及对fetchColumn() 方法技巧运用。