批改状态:未批改
老师批语:
主题:
MySQLi面向过程:使用预处理技术实现更新与删除操作
实现效果:
删除操作:

提示信息:

更新操作:

执行错误信息:

<?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);点击 "运行实例" 按钮查看在线实例
<?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(); 结果是一个对象
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号