在本教程中,您将学习如何使用MySQL准备(Prepared)语句来使您的查询执行得更快更安全。

MySQL Prepared语句简介

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

文本协议具有严重的性能问题。为了解决这个问题,MySQL自版本4.1以来添加了一个名为prepare语句的来实现一些新功能。

prepare语句利用客户端/服务器二进制协议。 它将包含占位符(?)的查询传递给MySQL服务器,如下例所示:

SELECT *

FROM products

WHERE productCode = ?;

当MySQL使用不同的productcode值执行此查询时,不必完全解析查询。 因此,这有助于MySQL更快地执行查询,特别是当MySQL多次执行查询时。 因为prepare语句使用占位符(?),这有助于避免SQL注入的问题,从而使您的应用程序更安全一些。

MySQL准备语句用法

为了使用MySQL准备语句,您需要使用其他三个MySQL语句如下:

PREPARE - 准备执行的声明。

EXECUTE - 执行由PREPARE语句定义的语句。

DEALLOCATE PREPARE - 发布PREPARE语句。

下图说明了如何使用PREPARE语句:

MySQL PREPARE语句示例

我们来看一下使用MySQL PREPARE语句的例子。

PREPARE stmt1 FROM 'SELECT productCode, productName

FROM products

WHERE productCode = ?';

SET @pc = 'S10_1678';

EXECUTE stmt1 USING @pc;

DEALLOCATE PREPARE stmt1;

首先,使用PREPARE语句准备执行语句。我们使用SELECT语句根据指定的产品代码从products表查询产品数据。然后再使用问号(?)作为产品代码的占位符。

接下来,声明了一个产品代码变量S10_1678。

然后,使用EXECUTE语句来执行产品代码变量

最后,我们使用DEALLOCATE PREPARE来发布PREPARE语句。

在本教程中,我们向您展示了如何使用MySQL PREPARE语句来执行带占位符的查询,以提高查询的速度,并使您的查询更安全。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

c mysql prepared_MySQL Prepared语句相关推荐

  1. windows下bat处理执行Mysql的sql语句

    这篇文章主要介绍了windows下bat批处理执行Mysql的sql语句,需要的朋友可以参考下 有时候我们需要用bat来定时执行mysql那么就可以参考下面的代码 直接上代码: @ECHO OFF S ...

  2. shell实行mysql语句_【Mysql】shell运行mysql的sql语句_MySQL

    bitsCN.com [Mysql]shell运行mysql的sql语句 shell本身是一种脚本语言,所以不能像java一样通过api去连接数据库.shell还是要借助mysql本身的一些运行脚本才 ...

  3. mysql里条件语句和循环语句_MySQL与Oracle 差异比较之四条件循环语句

    循环语句 编号 类别 oracle Mysql 注释 1 IF语句使用不同 IFiv_weekly_day = 'MON'THEN ii_weekly_day := 'MON'; ELSIFiv_we ...

  4. mysql 查询语句 参数,mysql参数化查询语句有关问题

    mysql参数化查询语句问题 部分代码如下: using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.O ...

  5. PHP获取MySQL执行sql语句的查询时间

    PHP获取MySQL执行sql语句的查询时间 1. $t1=microtime(true); mysql_query($sql); echo microtime(true)-$t1; 2. //计时开 ...

  6. mysql下sql语句 update 字段=字段+字符串

    mysql下sql语句令某字段值等于原值加上一个字符串 update 表明 SET 字段= 'feifei' || 字段; (postgreSQL 用 || 来连贯字符串) MySQL连贯字符串不能利 ...

  7. MySQL中SELECT语句简单使用

    MySQL中SELECT语句简单使用 最近开始复习mysql,查漏补缺吧. 关于mysql 1.MySQL不区分大小写,但是在MySQL 4.1及之前的版本中,数据库名.表名.列名这些标识符默认是区分 ...

  8. mysql分析sql语句基础工具 —— explain

    转载自 https://segmentfault.com/a/1190000009724144 立即登录 [笔记] mysql分析sql语句基础工具 -- explain  mysql wateran ...

  9. MySQL——高阶语句、存储过程(下)

    MySQL--高阶语句(下) 一.数据库函数 1.数学函数 2.聚合函数 3.字符串函数 4.日期时间函数 二.存储过程 1.概述 2.简介 3.优点 4.创建存储过程 调用存储过程 带参数的存储过程 ...

最新文章

  1. 02-JDBC学习手册:JDBC编程步骤【重点重点】
  2. SAPScript和Smartform双面打印
  3. BZOJ 3168 Luogu P4100 [HEOI2013]钙铁锌硒维生素 (矩阵求逆、二分图匹配)
  4. Hystrix默认超时时间
  5. CentOS 7.2.1511 x64下载地址
  6. 【博客话题】坚持的背影--记我的入门老师
  7. influx没有web_influxdb 安装及简单使用
  8. 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。
  9. 158 行 Python 代码,复现 DeepMind 递归神经网络 DRAW!
  10. 关于vue el-button 动态获取个数并附不同的颜色
  11. Redis 核心知识点总结
  12. # 20165208 2017-2018-2 《Java程序设计》第三周错题总结
  13. 网络空间安全复习归纳
  14. 解决markdown快捷键在输入法和chrome浏览器下的冲突问题
  15. Android包管理机制2 PackageInstaller安装APK
  16. 华为电脑和手机一碰传_华为手机怎么一碰传连接电脑传输照片和文件
  17. 取样定理实验matlab,取样定理及基于MATLAB的实验教学
  18. 奇兔recovery卡刷教程_奇兔刷机小编为你详解recovery界面中的功能
  19. 生物特征识别:指纹识别技术应用
  20. Internet security

热门文章

  1. 成都扬帆志远教育:跨境电子商务经济仍在前进
  2. Orchard基本概念
  3. 在VUE项目中导出excel——简单使用xlsx
  4. 你来我往!为了百亿大单,微软亚马逊又掐上了
  5. mc服务器区块显示,区块 - Minecraft Wiki,最详细的官方我的世界百科
  6. 原码、反码、补码、移码
  7. 2013年11月5日 14:49:03
  8. 抽根烟的功夫!用Python做个颜值测试脚本
  9. iOS狂暴之路(开始篇)—学习路线总结
  10. python字典键值唯一_python字典操作详解