预处理查询、更新、删除操作的基本步骤:
* 1. 查询表中是否有符合条件的记录,如果有就继续,否则提示用户;
* 2. 确定只查询到一条记录,并获取到这个记录的数据;
* 3. 准备要更新的数据,放在一个数组中;
* 4. 创建预处理语句,并生成预处理对象;
* 5. 执行预处理操作,并对执行结果进行分析;
* 6. 关闭预处理语句;
* 7. 关闭连接;
预处理更新操作代码如下:
<?php //1、连接数据库 require 'public/connect.php'; //2、查询更新项 $sql = "SELECT `id`,`name`,`email` FROM `user` WHERE `id`=?"; $id = 44; //3、创建stmt对象,预处理查询语句 $mysqli_stmt = $mysqli->prepare($sql); //4、绑定数据 $mysqli_stmt->bind_param('i',$id); //5、执行查询和更新操作 if ($mysqli_stmt->execute()){ //返回数据 $mysqli_stmt->store_result(); if ($mysqli_stmt->num_rows()==1){ //绑定结果集字段与变量 $mysqli_stmt->bind_result($id,$name,$email); //准备用于更新的数据,创建更新的预处理SQL语句 $data = ['name'=>'麦兜','email'=>'md@php.cn','password'=>'123']; $sql = "UPDATE `user` SET `name`=?,`email`=?,`password`=sha1(?) WHERE `id`=?"; //创建预处理对象 $mysqli_stmt = $mysqli->prepare($sql); //绑定参数 $mysqli_stmt->bind_param('sssi',$data['name'],$data['email'],$data['password'],$id); //执行预处理更新操作: execute(),返回布尔值,成功true,失败为false if ($mysqli_stmt->execute()){ //如果更新成功,应该根据受影响的记录数量,再进行一次判断 if ($mysqli_stmt->affected_rows){ //如果更新成功,会返回整数: 1 echo '<h3 style="color:green;">更新成功!</h3>'; }else{ echo '<h3 style="color:red;">没有记录被更新!</h3>'; } }else{ echo '<h3 style="color:red">更新失败'.$mysqli_stmt->error.'</h3>'; } }else{ echo "<h3 style='color: red'>没有查到到数据</h3>"; } }else{ echo "<h3 style='color: red'>查询失败'.$mysqli_stmt->error.'</h3>"; } //6、关闭预处理语句,关闭连接 $mysqli_stmt->close(); //关闭预处理语句 $mysqli->close(); //关闭连接
预处理删除代码如下:
<?php /** *预处理删除操作 */ //1、连接数据库 require 'public/connect.php'; //2、查询删除项 $sql = "SELECT `id`,`name`,`email` FROM `user` WHERE `id`=?"; $id = 44; //3、创建stmt对象,预处理查询语句 $mysqli_stmt = $mysqli->prepare($sql); //4、绑定数据 $mysqli_stmt->bind_param('i',$id); //5、执行查询和删除操作 if ($mysqli_stmt->execute()){ $mysqli_stmt->store_result(); //如果执行查询成功,返回数据 if ($mysqli_stmt->num_rows == 1){ //如果结果集的数量为1,则执行下列代码 $mysqli_stmt->bind_result($id,$name,$email); //绑定结果集字段与变量 $sql = "DELETE FROM `user` WHERE `id`=? "; //创建删除的预处理SQL语句 $mysqli_stmt = $mysqli->prepare($sql); //创建预处理对象 $mysqli_stmt->bind_param('i',$id); //绑定数据 if ($mysqli_stmt->execute()){ //执行删除操作 if ($mysqli_stmt->affected_rows){ //如果删除成功,会返回整数: 1 echo '<h3 style="color: green">删除成功!</h3>'; }else{ echo '<h3 style="color:red;">没有记录被删除!</h3>'; } }else{ echo '<h3 style="color:red">删除失败'.$mysqli_stmt->error.'</h3>'; } }else{ echo "<h3 style='color: red'>没有查询到数据</h3>"; } }else{ echo "<h3 style='color: red'>查询失败'.$mysqli_stmt->error.'</h3>"; } //6、关闭预处理语句,关闭连接 $mysqli_stmt->close(); //关闭预处理语句 $mysqli->close(); //关闭连接