博主信息
博文 31
粉丝 0
评论 0
访问量 30017
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
Day28-2018/1/3(预处理-数据库连接操作删改查操作)
SmallKing的博客
原创
789人浏览过

内容:

  1. 改写预处理的更新操作,将外层的查询操作用预处理来实现;、

  2. 使用预处理实现MySQLi面向对象的删除操作;

配置文件

<?php
header("Content-type: text/html; charset=utf-8");
//创建配置文件
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','root');
define('DB_NAME','demo');
define('DB_CHAR','utf8');

连接文件

<?php
include 'config.php';
//连接到数据库demo
$mysqli=new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
//连接是否成功,失败则返回错误信息
if ($mysqli->connect_error) {
   die( "连接失败(".$mysqli->connect_errno.')'.$mysqli->connect_error);
}
$mysqli->set_charset(DB_CHAR);

预处理更新

<?php

/**
 * 任务: 更新id =5的记录
 * 基本步骤:
 * 1. 查询表中是否有id=5的记录,如果有就继续,否则提示用户
 * 2. 确定只查询到一条记录,并获取到这个记录的数据
 * 3. 准备要更新的数据,放在一个数组中
 * 4. 创建预处理更新语句,并生成预处理对象
 * 5. 执行预处理更新,并对执行结果进行分析
 * 6. 关闭预处理语句
 * 7. 关闭连接
 */
//连接数据库
require 'public/connect.php';
//查询更新项
$sql="SELECT `id`,`name`,`email` FROM `user1` WHERE `id` = ? ";
$id=5;
//预处理查询
$mysqli_stmt=$mysqli->prepare($sql);
//绑定查询信息
$mysqli_stmt->bind_param('i',$id);
//执行查询
if ($mysqli_stmt->execute()){
    //返回数据
    $mysqli_stmt->store_result();
    if ($mysqli_stmt->num_rows()==1){
        //绑定结果集字段与变量
        $mysqli_stmt->bind_result($id,$name,$email);
        echo '<h3 align="center">修改前的数据为</h3>';
        echo '<table border="1" cellspacing="0" cellpadding="3" width="40%" align="center">';
        echo '<tr bgcolor="lightblue"><th>ID</th><th>姓名</th><th>邮箱</th></tr>';
        while($mysqli_stmt->fetch()){
            echo '<tr align="center">';
            echo '<td>'.$id.'</td><td>'.$name.'</td><td>'.$email.'</td>';
            echo '</tr>';
        }
        $data = ['name'=>'Peter', 'email'=>'z@php.cn', 'password'=>'123'];
        //3.创建更新的预处理SQL语句
        $sql = "UPDATE user1 SET name=?, email=?, password=sha1(?) WHERE id = ?";
        //4.用连接对象$mysqli的prepare()方法来创建一个预处理对象
        $mysqli_stmt = $mysqli->prepare($sql);
        //5.调用预处理对象中的bind_param()方法将实际参数与SQL语句中的占位符进行绑定
        $mysqli_stmt->bind_param('sssi', $data['name'], $data['email'], $data['password'], $id);
        //6. 执行预处理更新操作: execute(),返回布尔值,成功true,失败为false
        if($mysqli_stmt->execute()) {
            //如果更新成功,应该根据受影响的记录数量,再进行一次判断
            if ($mysqli_stmt->affected_rows) {  //如果更新成功,会返回整数: 1
                echo '<h3>更新成功</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>";
//关闭预处理语句
$mysqli_stmt->close();
//关闭连接
$mysqli->close();

QQ图片20180104164838.png

预处理删除

<?php

/**
 * 任务: 删除id =8的记录
 * 基本步骤:
 * 1. 查询表中是否有id=8的记录,如果有就继续,否则提示用户
 * 2. 确定查询到记录,并获取到数据
 * 3. 创建预处理更新语句,并生成预处理对象
 * 4. 执行预处理更新,并对执行结果进行分析
 * 5. 关闭预处理语句
 * 6. 关闭连接
 */
//连接数据库
require 'public/connect.php';
//查询更新项
$sql="SELECT `id`,`name`,`email` FROM `user1` WHERE `id` = ? ";
$id=8;
//预处理查询
$mysqli_stmt=$mysqli->prepare($sql);
//绑定查询信息
$mysqli_stmt->bind_param('i',$id);
//执行查询
if ($mysqli_stmt->execute()){
    //返回数据
    $mysqli_stmt->store_result();
    if ($mysqli_stmt->num_rows()>0){
        //绑定结果集字段与变量
        $mysqli_stmt->bind_result($id,$name,$email);
        echo '<h3 align="center">删除数据为</h3>';
        echo '<table border="1" cellspacing="0" cellpadding="3" width="40%" align="center">';
        echo '<tr bgcolor="lightblue"><th>ID</th><th>姓名</th><th>邮箱</th></tr>';
        while($mysqli_stmt->fetch()){
            echo '<tr align="center">';
            echo '<td>'.$id.'</td><td>'.$name.'</td><td>'.$email.'</td>';
            echo '</tr>';
        }
        //3.创建删除的预处理SQL语句
        $sql = "DELETE FROM user1  WHERE id = ?";
        //4.用连接对象$mysqli的prepare()方法来创建一个预处理对象
        $mysqli_stmt = $mysqli->prepare($sql);
        //5.调用预处理对象中的bind_param()方法将实际参数与SQL语句中的占位符进行绑定
        $mysqli_stmt->bind_param('i', $id);
        //6. 执行预处理更新操作: execute(),返回布尔值,成功true,失败为false
        if($mysqli_stmt->execute()) {
            //如果更新成功,应该根据受影响的记录数量,再进行一次判断
            if ($mysqli_stmt->affected_rows) {  //如果更新成功,会返回整数: 1
                echo '<h3>删除成功</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>";
//关闭预处理语句
$mysqli_stmt->close();
//关闭连接
$mysqli->close();

QQ图片20180104165542.png

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学