博客列表 >预处理技术实现更新与删除操作(面向过程)--2018年4月25日18时34分发布(24日作业)

预处理技术实现更新与删除操作(面向过程)--2018年4月25日18时34分发布(24日作业)

lilove的博客
lilove的博客原创
2018年04月25日 18:59:021040浏览

主题:

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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议