博客列表 >MySQLi_使用预处理技术实现更新与删除操作_4月24日作业

MySQLi_使用预处理技术实现更新与删除操作_4月24日作业

日薪月e的博客
日薪月e的博客原创
2018年04月25日 15:05:34835浏览

本次作业是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);

运行实例 »

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


更新成功效果图:

00-1.jpg


四、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);

运行实例 »

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


删除成功效果图:

00-2.jpg


00.jpg




声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议