本次作业是MySQLi面向过程:使用预处理技术实现更新与删除操作。
使用预处理技术有以下几点好处:
1.预处理技术,可以将动态变量,从SQL语句中的分离出来,单独操作
2.解决了SQL注入的安全问题
3.预处理操作是通过一个叫预处理对象的工具来操作的: STMT
预处理技术的基本步骤:
1.创建stmt预处理对象
2.检测SQL语句
3.参数绑定
4.执行查询
5.注销stmt预处理对象
6.关闭数据库连接
现在将实例代码分享如下:
一、配置文件mysqli_config.php代码:
<?php define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PASS','root'); define('DB_NAME','php'); define('DB_CHAR','utf8');
点击 "运行实例" 按钮查看在线实例
二、数据库连接文件mysqli_connect.php代码:
<?php require 'mysqli_config.php'; $db = @mysqli_connect(DB_HOST, DB_USER, DB_PASS); if (mysqli_connect_errno($db)) { exit('连接失败'.mysqli_connect_error($db)); } echo "<h1>ok!</h1>"; mysqli_select_db($db,DB_NAME); mysqli_set_charset($db,DB_CHAR);
点击 "运行实例" 按钮查看在线实例
三、UPDATE操作0424hw_stmt_pre_update.php代码:将数据库中name是郭靖的工资修改为9988.
<? /*预处理,更新操作*/ //1.连接数据库 require 'mysqli_connect.php'; //2.准备sql语句,将变量部分用占位符代替 $sql = 'UPDATE staff SET salary=? WHERE name=?;'; $salary = 9988; $name = '郭靖'; //3.创建并初始化预处理对象stmt $stmt = mysqli_stmt_init($db); //4.用stmt对象检测预处理语句是否正确,成功返回true,失败返回false if (mysqli_stmt_prepare($stmt,$sql)) { //将变量与SQL语句中的占位符进行绑定 mysqli_stmt_bind_param($stmt, "is", $salary,$name); //执行 if (mysqli_stmt_execute($stmt)) { //判断是否执行成功:用受影响记录数量判断 if (mysqli_stmt_affected_rows($stmt) > 0) { echo '更新成功,'.$name.'的工资已经更新为'.$salary.'元'; } else { echo '更新失败'; } } else { exit(mysqli_stmt_errno($stmt).':'.mysqli_stmt_error($stmt)); } } else { exit(mysqli_stmt_errno($stmt).':'.mysqli_stmt_error($stmt)); } //注销stmt对象 mysqli_stmt_close($stmt); //关闭数据库连接 mysqli_close($db);
点击 "运行实例" 按钮查看在线实例
更新成功效果图:
四、DELETE操作0424hw_stmt_pre_delete.php代码:删除数据库中主键id是13的一条数据。
<?php /*预处理,删除操作*/ //1.连接数据库 require 'mysqli_connect.php'; //2.准备sql语句并用占位符替代 $sql = 'DELETE FROM staff WHERE staff_id=?'; $staff_id = 13; //3.创建并初始化预处理对象stmt $stmt = mysqli_stmt_init($db); //4.检测预处理语句是否正确 if (mysqli_stmt_prepare($stmt,$sql)) { //将变量与占位符绑定 mysqli_stmt_bind_param($stmt,"i",$staff_id); //执行sql语句 if(mysqli_stmt_execute($stmt)){ //判断是否执行成功(受影响记录数) if (mysqli_stmt_affected_rows($stmt) > 0) { echo '删除成功,主键id是:'.$staff_id; } else { echo '删除失败'; } } else { exit(mysqli_stmt_errno($stmt).':'.mysqli_stmt_error($stmt)); } } else { exit(mysqli_stmt_errno($stmt).':'.mysqli_stmt_error($stmt)); } //注销预处理对象 mysqli_stmt_close($stmt); //关闭数据库 mysqli_close($db);
点击 "运行实例" 按钮查看在线实例
删除成功效果图: