1,以下代码主要实现了mysqli对象对数据库的查询数据的操作:
实例
<?php //预处理查询数据操作 //链接数据库 require "demo1.php"; //准备SQL语句 $sql = "SELECT `id`,`name`,`chinese` FROM `student1` WHERE `id` > ? ;"; //创建预处理对象 $stmt = $mysqli->prepare($sql); //绑定参数 $stmt->bind_param('i',$id); $id= 1; if($stmt->execute()){ //获取结果集并放到缓存区 $stmt->store_result(); //将结果集中的列绑定到变量上 $stmt->bind_result($id,$name,$chinese); //结果集是否为空,只有不为空的时候才遍历 if($stmt->num_rows > 0){ //循环遍历结果集 //fetch()每次获取一条记录,并将指针自动下移 while($stmt->fetch()){ echo 'id:'.$id.'-----姓名:'.$name.'-----语文成绩:'.$chinese.'<br>'; } } else { exit('当前数据表中没有数据'); } //释放结果集 $stmt->free_result(); }else{ //返回执行阶段的出错信息 exit($stmt->errno. ': ' . $stmt->error); } //注销stmt对象 $stmt->close(); //关闭连接 $mysqli->close(); ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
说明:以上代码主要运用mysqli对象连接数据库,通过预处理对象$stmt对数据库进行预处理查询数据操作,主要的知识点是参数的绑定,以及对结果集循环的遍历。
2,以下代码主要介绍了PDO对数据库的连接操作:
实例
<?php //链接数据库 $dsn = 'mysqli:host=localhost;dbname=db100;charset=utf8'; $user = 'root'; $pass = 123456; try{ $pdo = new PDO($dsn,$user,$pass); //echo '连接成功'; }catch(PDOException $e){ die('Connect ERROR! :'.$e->getMessage()); } //关闭连接 //$pdo = null; //unset($pdo) ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
以上代码主要实现了pdo对象连接数据库的操作,其中$dsn 是连接数据库的数据源,是确定以哪种方式连接数据库的,此处我用的为mysqli数据源连接的数据库。
3,以下代码是PDO对象通过预处理新增数据的操作:
实例
<?php //新增记录 //链接数据库 require 'demo1.php'; //准备SQL语句,占位符换为命名占位符 $sql = "INSERT INTO `student1` SET `id`=:id,`name`=:name,`chinese`=:chinese"; //创建预处理对象 $stmt = $pdo->prepare($sql); $data = ['id'=>11,'name'=>'黄蓉','chinese'=>90]; //绑定参数 $stmt->bindParam(':id',$data['id'],PDO::PARAM_INT); $stmt->bindParam(':name',$data['name'],PDO::PARAM_STR); $stmt->bindParam(':chinese',$data['chinese'],PDO::PARAM_STR); if($stmt->execute()){ //rowCount():返回受影响的记录数量 echo '成功添加了' . $stmt->rowCount().'条记录'; }else{ echo '添加失败!'; print_r($stmt->errorInfo()); exit(); } //关闭连接 $stmt = null; $pdo = null; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
说明:使用pdo对象中的预处理对象操作数据库,此处的占位符使用的为命名占位符,通过$stmt->execute()方法执行新增数据,并通过$stmt->rowCount()来返回受影响的记录数;
4,以下代码代码是PDO对象通过预处理更新数据的操作:
实例
<?php //更新记录 //链接数据库 require 'demo1.php'; //准备SQL语句,占位符换为命名占位符 $sql = "UPDATE `student1` SET `name`=:name WHERE `id`=:id; "; //创建预处理对象 $stmt = $pdo->prepare($sql); $data = ['id'=>11,'name'=>'郭靖']; //绑定参数 $stmt->bindParam('id',$data['id'],PDO::PARAM_INT); $stmt->bindParam('name',$data['name'],PDO::PARAM_STR); if($stmt->execute()){ //rowCount():返回受影响的记录数量 echo '成功修改了' . $stmt->rowCount().'条记录'; }else{ echo '修改失败!'; print_r($stmt->errorInfo()); exit(); } //关闭连接 $stmt = null; $pdo = null; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
说明:更新操作同样使用pdo对象中的预处理对象操作数据库,此处的占位符使用的为命名占位符,通过改变不同的SQL语句实现更新操作并结合$stmt->execute()方法执行更新数据,并通过$stmt->rowCount()来返回受影响的记录数;
5,以下代码代码是PDO对象通过预处理删除数据的操作:
实例
<?php //删除记录 //链接数据库 require 'demo1.php'; //准备SQL语句,占位符换为命名占位符 $sql = "DELETE FROM `student1` WHERE `english`=:english; "; //创建预处理对象 $stmt = $pdo->prepare($sql); $english = 0; //绑定参数 $stmt->bindParam('english',$english,PDO::PARAM_STR); if($stmt->execute()){ //rowCount():返回受影响的记录数量 echo '成功删除了' . $stmt->rowCount().'条记录'; }else{ echo '删除失败!'; print_r($stmt->errorInfo()); exit(); } //关闭连接 $stmt = null; $pdo = null; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
说明:与新增,更新操作相同,删除操作同样使用pdo对象中的预处理对象操作数据库,此处的占位符使用的为命名占位符,通过改变不同的SQL语句实现删除操作并结合$stmt->execute()方法执行删除数据,并通过$stmt->rowCount()来返回受影响的记录数;
6,以下代码是PDO对象通过预处理查询数据的操作:
实例
<?php //查询记录 //链接数据库 require 'demo1.php'; //准备SQL语句 $sql = "SELECT `id`,`name`,`chinese` FROM `student1` WHERE `id` > :id"; //创建预处理对象 $stmt = $pdo->prepare($sql); $id = 1; //绑定参数 $stmt->bindParam('id',$id,PDO::PARAM_INT); if($stmt->execute()){ //第一种方法 $rows = $stmt->fetchAll(); foreach($rows as $row ){ echo '编号:'.$row['id'],'名字:'.$row['name'],'语文成绩:'.$row['chinese'],'<br>'; } //第二种方法 // while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ // echo var_export($row).'<br>'; // } }else{ echo '查询失败!'; print_r($stmt->errorInfo()); exit(); } //关闭连接 $stmt = null; $pdo = null; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php //查询记录 //链接数据库 require 'demo1.php'; //准备SQL语句 $sql = "SELECT `id`,`name`,`chinese` FROM `student1` WHERE `id` > :id"; //创建预处理对象 $stmt = $pdo->prepare($sql); $id = 1; //绑定参数 $stmt->bindParam('id',$id,PDO::PARAM_INT); //将结果集中的列绑定到变量上 $stmt->bindColumn('name', $name); $stmt->bindColumn('chinese', $chinese); if($stmt->execute()){ //第三种方法 //用列变量来遍历结果集 while ($stmt->fetch(PDO::FETCH_BOUND)) { echo '编号',$id,'姓名: ',$name, '语文成绩: ', $chinese, '<br>'; } }else{ echo '查询失败!'; print_r($stmt->errorInfo()); exit(); } //关闭连接 $stmt = null; $pdo = null; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
说明:预处理查询数据操作,与前三者首先是SQL语句不同,使用的查询数据的SQL语句,其次查询语句需要获取结果集从而打印到屏幕,第一种方法是通过$stmt->fetchAll()函数,使用foreach或while循环遍历结果集的方式,此方法不许要绑定待查询数据的参数,第二种方法先将结果集中的列绑定到变量上,再通过$stmt->fetch(PDO::FETCH_BOUND)循环输出结果集。
7,PDO为操作数据库提供了统一的接口,使对数据库的操作更加的规范统一,同时比其他的方式更高效。
总结:此次学习mysqli对数据库的增删改查操作,相对来说感觉是有点麻烦的,学习了mysqli的只是后,又学了pdo对数据哭的增删改查操作,相对mysqli来说pdo使用起来更加的方便间接,其中的预处理防止SQL注入更是让我感到了技术的无穷的奥妙,希望继续努力,继续加油!