MySQL:Prepared Statement 预处理语句
创始人
2024-11-13 21:05:52
0

预处理语句(Prepared Statement) 是一种在数据库管理系统中使用的编程概念,用于执行对数据库进行操作的 SQL 语句。

使用预处理语句的具体方式和语法依赖于所用的编程语言和数据库管理系统。常见的编程语言如 Java、PHP、PythonC# 都提供了对预处理语句的支持。

在MySQL版本4.1之前,查询以文本格式发送到MySQL服务器。反过来,MySQL使用 文本协议(text protocol) 将数据返回给客户端。MySQL必须完全解析查询并将结果集转换为字符串,然后再将其返回给客户端。

文本协议具有严重的性能影响。为解决此问题,自4.1版本后,MySQL添加了一项新特性—— prepared statement

prepared statement 利用 client/server binary protocol ,它将包含占位符(?)的查询语句发送到MySQL服务器:

SELECT column_list FROM products WHERE productcode = ?; 

当 MySQL 使用不同的 productcode 值 执行此查询时,它不必完全解析查询。这有助于MySQL更快地执行查询,提升程序的性能,特别是当MySQL多次执行相同的查询时。

由于预处理语句使用占位符(?),这有助于避免许多SQL注入的变体,使应用程序更安全。

预处理语句的基本思想是将 SQL 语句和参数分离开来。在执行之前,数据库管理系统会先解析并编译预处理语句,然后将其保存在预处理语句的执行计划中。

当应用程序需要执行相同或类似的 SQL 语句时,只需要对参数进行修改,而不必重新解析和编译整个 SQL 语句,从而提高执行效率。

使用步骤

使用预处理语句通常需要以下几个步骤:

  1. 准备预处理语句:应用程序先将 SQL 语句发送给数据库管理系统,并告知数据库要使用预处理语句的方式进行处理。数据库会进行语法分析和执行计划的生成,生成一个可执行的预处理语句对象。

  2. 绑定参数:应用程序将要执行的 SQL 语句中的参数值绑定到预处理语句中。这样可以防止 SQL 注入攻击,并且可以使数据库系统充分利用参数值进行查询优化。

  3. 执行预处理语句:应用程序将绑定了参数的预处理语句发送给数据库进行执行。数据库会根据预处理语句中的执行计划执行相应的操作,并返回结果给应用程序。

用法

![[Pasted image 20231010205950.png]]

使用 预处理语句 需要如下三个语句:

  1. PREPARE:为执行准备一条语句

  2. EXECUTE:执行PREPARE语句准备好的语句

  3. DEALLOCATE PREPARE:发布准备好的声明

-- 示例 '''step 1''' PREPARE stmt1 FROM  	'SELECT     	    productCode,              productName  	FROM products         WHERE productCode = ?';  '''step 2     声明一个变量 pc,代表productcode并为其赋值''' SET @pc = 'S10_1678';  '''step 3    EXECUTE''' EXECUTE stmt1 USING @pc;  '''step 4    为变量 pc 分配另一个product code''' SET @pc = 'S12_1099';  '''step 5    EXECUTE with the new product code'''    EXECUTE stmt1 USING @pc;  '''step 6    release the prepared statement'''    DEALLOCATE PREPARE stmt1; 

优点

  • 提高性能:预处理语句的执行计划可以被多次重复使用,避免了重复解析和编译 SQL 语句的开销,提高了执行效率。

  • 预防 SQL 注入攻击:通过参数绑定,预处理语句可以防止恶意用户通过输入特殊字符来修改 SQL 逻辑,提升了应用程序的安全性。

  • 方便维护:将 SQL 逻辑和参数分开,使代码清晰易读,易于维护和修改。

相关内容

热门资讯

IA解析/牛牛房卡怎么获得茄子... 今 日消息,茄子娱乐房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
推荐一款!牛牛房卡制作链接新九... 新九天大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33290...
头条推荐!金花房卡代理零售新神... 您好!微信新神兽/青龙大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(新神兽/青龙...
科技实测!牛牛房卡代理九九大厅... 九九大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
安卓系统功能可以添加吗,解锁无... 你有没有想过,你的安卓手机里那些功能是不是可以像变魔术一样,随心所欲地添加新的呢?没错,今天就来聊聊...
我来教你/牛牛房卡怎么获得乐乐... 微信游戏中心:乐乐大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
IA解析/牛牛房卡游戏平台加盟... 您好!微信精卫大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(精卫大厅)大厅介绍:...
一分钟了解!牛牛房卡批发平台火... 今 日消息,火狐大厅/新超圣房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更...
正版授权!金花微信链接市场价格... 天启联盟房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
推荐一款!金花房卡出售新道游/... 推荐一款!金花房卡出售新道游/新皇豪/房卡客服新道游/新皇豪是一款非常受欢迎的游戏,咨询房/卡添加微...
我来教你/牛牛房卡制作链接神盾... 神盾大厅/新天道是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33...
IA解析/金花房卡出售青鸟大厅... 微信游戏中心:青鸟大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
玩家攻略,怎么买斗牛房卡星空乐... 星空乐娱是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
重大通报,微信金花房卡怎么弄九... 今 日消息,九哥联盟房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
我来教你/金花房卡怎么购买荣耀... 荣耀乐娱房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
ia攻略/牛牛房卡怎么购买天蝎... ia攻略/牛牛房卡怎么购买天蝎大厅/微信链接房卡价格一览表天蝎大厅是一款非常受欢迎的游戏,咨询房/卡...
重大通报,金花微信链接市场价格... 微信游戏中心:海航大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
正版授权!金花房卡专卖店老神兽... 老神兽/海贝大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33...
重大通报,金花房卡怎么购买新八... 今 日消息,新八戒房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单介...
玩家攻略,金花房卡官网生肖系列... 玩家攻略,金花房卡官网生肖系列/新大圣/房卡链接怎么弄的生肖系列/新大圣是一款非常受欢迎的游戏,咨询...