博主信息
博文 100
粉丝 8
评论 2
访问量 174899
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
预处理技术实现更新与删除操作(面向过程)--2018年4月25日18时34分发布(24日作业)
lilove的博客
原创
1215人浏览过

主题:

MySQLi面向过程:使用预处理技术实现更新与删除操作

实现效果:

删除操作:

删之前.png

提示信息:

删除执行结果.png

更新操作:

更新前.png

执行错误信息:

执行错误.png

删除操作代码(delete.php):

<?php
/**
 * MySQLi面向过程:使用预处理技术实现数据库数据删除操作
 */

//连接数据库
require 'mysqli_connect.php';

//创建SQL语句及占位符
$sql = "DELETE FROM staff WHERE name=?;";

//创建stmt对象
$stmt = mysqli_stmt_init($db);

//判断预处理对象是否正确然后绑定变量
if(mysqli_stmt_prepare($stmt, $sql)){
    //绑定对stmt对象中的变量
    mysqli_stmt_bind_param($stmt, "s", $name);

    //给变量赋值
    $name = '武大郎';
    //执行操作
    mysqli_stmt_execute($stmt);
    //输出执行结果
    echo '<br>删除了'. mysqli_stmt_affected_rows($stmt). '条记录';

    //给变量赋值
    $name = '西门庆';
    //执行操作
    mysqli_stmt_execute($stmt);
    //输出执行结果
    echo '<br>删除了'. mysqli_stmt_affected_rows($stmt). '条记录';

} else {
    //如果判断结果错误输出错误信息
    exit(mysqli_stmt_errno($stmt). ':'. mysqli_stmt_error($stmt));
}

//关闭stmt对象
mysqli_stmt_close($stmt);

//关闭连接
mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例

更新操作代码(update.php):

<?php
/**
 * MySQLi面向过程:使用预处理技术实现更新操作
 */

//连接数据库
require 'mysqli_connect.php';

//创建SQL语句及占位符
$sql = "UPDATE staff SET name=? WHERE name=?;";

//创建stmt对象
$stmt = mysqli_stmt_init($db);

//判断预处理对象是否正确然后绑定变量
if(mysqli_stmt_prepare($stmt, $sql)){
    //绑定对stmt对象中的变量
    mysqli_stmt_bind_param($stmt, "ss", $name, $nameOld);
    //给变量赋值
    $nameOld = '成昆';
    $name = '欧阳锋';
    //执行操作
    mysqli_stmt_execute($stmt);
    //输出执行结果
    echo '<br>更新了'. mysqli_stmt_affected_rows($stmt). '条记录';
} else {
    //如果判断结果错误输出错误信息
    exit(mysqli_stmt_errno($stmt). ':'. mysqli_stmt_error($stmt));
}

//关闭stmt对象
mysqli_stmt_close($stmt);

//关闭连接
mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例

总结:

面向过程操作数据库流程比较清晰,工作中需要使用预处理来操作防止SQL注入攻击。

sql(CURD)语句总结:

增:INSERT INTO 表名(表头的值) VALUES(值);

删:DELETE FROM 表名 WHERE 表头='值';

改:UPDATE 表名 SET 新表头='值' WHERE 旧表头='值';

查:SELECT 表头 FROM 表名 WHERE 表头='值';

注意执行写操作(增删改)时必须加上条件以保证安全性,关键字IGNORE可防止重复执行写操作。

 预处理函数总结:

创建stmt预处理对象:mysqli_stmt_init();

用stmt语句检测预处理对象:mysqli_stmt_prepare();

占位符绑定变量:mysqli_stmt_bind_param();

受影响的结果行数:mysqli_stmt_affeced_rows();

执行预处理SQL语句:mysqli_stmt_excute();

遍历结果集:mysqli_stmt_fetch(); 结果是一个对象

批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学