今天学习了MySQLi面向对象中如何使用数据的增删改查操作;什么是PDO,PDO又有哪些优势,PDO如何进行数据的增删改查操作,通过哪些方法能够获取结果集的记录数量?
代码:
<?php /** *MySqli查询操作 */ //连接数据库 require 'index.php'; //准备SQL语句 $sql = "SELECT `id`,`name`,`password` FROM `user` WHERE `id` > ? ;"; // 创建预处理对象 $stmt = $mysqli->stmt_init(); if ($stmt->prepare($sql)) { //绑定参数 $stmt->bind_param('i', $id); //设置参数 $id = 10; if ($stmt->execute()) { //获取结果集并放到缓存区 $stmt->store_result(); //将结果集中的列绑定到变量上 $stmt->bind_result($id,$name, $password); //结果集是否不为,只有不为空的时候才遍历 if ($stmt->num_rows > 0) { // 循环遍历结果集 // fetch()每次获取一条记录,并将指针自动下移 while ($stmt->fetch()) { echo '<p>id:'.$id.'<br>用户名:' .$name.'<br>密码:'.$password.'</p>'; } } else { exit('<p>当前表中没有数据</p>'); } // 释放结果集 $stmt->free_result(); } else { //返回执行阶段的出错信息 exit($stmt->errno.': '.$stmt->error); } } else { //返回sql语句检测阶段的出错信息 exit($stmt->errno. ': ' . $stmt->error); } //注销stmt对象 $stmt->close(); //关闭连接 $mysqli->close();
点击 "运行实例" 按钮查看在线实例
浏览图:
代码:
<?php /** * PDO连接数据库 */ //设置数据库类型 以及数据库服务器和默认的数据名 $dsn = 'mysql:host=127.0.0.1; dbname=ceshi'; //用户名 $user = 'root'; //密码 $pass = '123456'; //实例化PDO类,创建pdo对象,并完成了数据库的连接 try { $pdo = new PDO($dsn, $user, $pass); echo '<h2>连接成功</h2>'; } catch (PDOException $e) { die('Connect ERROR! :'. $e->getMessage()); } $pdo = null; // 关闭连接 unset($pdo);
点击 "运行实例" 按钮查看在线实例
浏览图:
代码:
<?php //PDO新增数据 //1.连接数据 $pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456'); $sql="INSERT `user` SET `name`= :name,`password`= sha1(:password) "; //2.创建预处理对象 $stmt=$pdo->prepare($sql); //3.执行添加 $stmt->execute(['name'=>'huang','password'=>'6666']); $stmt->execute(['name'=>'hao','password'=>'6666']); $stmt->execute(['name'=>'ling','password'=>'6666']); $stmt->execute(['name'=>'ke','password'=>'6666']); echo '成功添加了'.$stmt->rowCount().'条用户'; $stmt = null; // 关闭连接 $pdo = null;
点击 "运行实例" 按钮查看在线实例
浏览图:
代码:
<?php /** * PDO更新操作 */ //1.连接数据 $pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456'); $sql="UPDATE `user` SET `name`= :name WHERE id= :id"; //2.创建预处理对象 $stmt=$pdo->prepare($sql); //执行SQL语句 $stmt->execute(['name'=>'牛郎','id'=>7]); echo '修改完成'.$stmt->rowCount().'条用户名'; $stmt=null; //关闭连接 $pdo= null;
点击 "运行实例" 按钮查看在线实例
浏览图;
代码:
<?php /** * PDO删除操作 */ //1.连接数据库 $pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456'); //2.准备SQL语句 $sql="DELETE FROM `user` WHERE `id`= :id"; //3.创建预处理对象 $stmt=$pdo->prepare($sql); //判断执行SQL语句 if($stmt->execute(['id'=>7])){ echo '您已成功的删除了'.$stmt->rowCount().'个账号'; }else{ echo '不成在'; print_r($stmt->errorInfo()); exit(); } $stmt=null; //关闭连接 $pdo=null;
点击 "运行实例" 按钮查看在线实例
浏览图:
代码:
<?php /** * PDO查询操作 */ //连接数据库 $pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456'); //准备SQL语句 $sql="SELECT `name` FROM `user` WHERE `id`=:id "; //创建预处理对象 $temt=$pdo->prepare($sql); //执行查询 $temt->execute(['id'=>10]); //将结果集中的列绑定到变量上 $temt->bindColumn('name',$name); while ($temt->fetch(PDO::FETCH_BOUND)){ echo '您查询的用户名为'.$name.'<br>'; } $stmt=null; //关闭连接 $pdo= null;
点击 "运行实例" 按钮查看在线实例
浏览图:
PDO的优势:
PDO是PHP数据对象(PHP Date Object)的缩写,是PHP操作所有数据库的抽象层,提供了一个统一的访问接口;
1:PDO可以使用相同的SQL语句执行不同的数据库,而MySqli只能执行MySql一种数据库。
2:PDO支持更高级的DB特性操作
3:PDO是PHP官方的PECL库,兼容性稳定性高
4:PDO可以防止SQL注入,确保数据库更加安全
获取结果集记录数量的正确方式是什么?
获取结果集有三种方法,分为fetch() tchColumn() fetchAll()
fetch()方法
fetch()方法用于获取结果集的下一行
在PDO中通过预处理语句prepare()和execute()执行SQL查询语句,并且应用while()语句和fetch()方法完成数据的循环输出
fetchAll()方法
fetchAll()方法是为了获取结果集的所有行,其返回值是一个包含结果集中所有数据的二进制数组
fetchColumn()方法
fetchColumn()方法获取结果集中下一行指定列的值
通过fetchColumn()方法获取结果集中下一行中指定列的值。(或第一列id的值)
总结:
熟悉了如何使用MySqli对数据进行增删查改;
熟悉了使用PDO对数据进行增删查改;
准备好SQL语句后,需先创建预处理对象prepare(),然后才能执行SQL语句execute();
PDO比MySqli更加简洁,更加具有安全性,其兼容稳定性更高;
在结束流程后进行注销其预处理对象,关闭数据库连接,;