Blogger Information
Blog 42
fans 0
comment 1
visits 26345
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MySQLi_使用预处理技术实现更新与删除操作_4月24日作业
日薪月e的博客
Original
831 people have browsed it

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




Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post