博客列表 >MySQLi面向对象预处理技术

MySQLi面向对象预处理技术

LIWEN的博客
LIWEN的博客原创
2018年01月05日 13:36:50868浏览

预处理查询、更新、删除操作的基本步骤:
* 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();  //关闭连接


上一条:PDO删除操作下一条:php之pdo操作
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议