Blogger Information
Blog 29
fans 0
comment 0
visits 27234
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MySQLi面向对象预处理技术
LIWEN的博客
Original
873 people have browsed it

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


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post