预处理查询、更新、删除操作的基本步骤:
* 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 '
更新成功!
';}else{
echo '
没有记录被更新!
';}
}else{
echo '
更新失败'.$mysqli_stmt->error.'
';}
}else{
echo "
没有查到到数据
";}
}else{
echo "
查询失败'.$mysqli_stmt->error.'
";}
//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 '
删除成功!
';}else{
echo '
没有记录被删除!
';}
}else{
echo '
删除失败'.$mysqli_stmt->error.'
';}
}else{
echo "
没有查询到数据
";}
}else{
echo "
查询失败'.$mysqli_stmt->error.'
";}
//6、关闭预处理语句,关闭连接
$mysqli_stmt->close(); //关闭预处理语句
$mysqli->close(); //关闭连接