news 2026/6/9 16:05:16

【MYSQL】字符串拼接和参数化sql语句区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【MYSQL】字符串拼接和参数化sql语句区别

总结:

参数化不是为了复用查询结果,
而是为了固定 SQL 结构,让解析和执行行为可预测;
同时通过语义隔离彻底消除 SQL 注入。

字符串拼接:

varids=string.Join(",",idList);varsql=$@" SELECT * FROM a WHERE a.id IN ({ids}); ";//生成sql可能是SELECT*FROM a WHEREa.idIN(1,2,3,4,5,6,7,8,9,...);

参数化sql:

varparameters=newList<MySqlParameter>();varplaceholders=newList<string>();for(inti=0;i<idList.Count;i++){varname=$"@id{i}";placeholders.Add(name);parameters.Add(newMySqlParameter(name,idList[i]));}varsql=$@" SELECT * FROM a WHERE a.id IN ({string.Join(",",placeholders)}); ";//生成固态sqlSELECT*FROM a WHEREa.idIN(@id0,@id1,@id2,...);

在代码层面,虽然每次调用都是不同的sql,但是对于mysql数据库来说完全不一样。
上面给出的两个代码注释下面就是数据库接收到的sql模式,可以看到,参数化每次数据库接收的都是一样的。因此参数化让数据库能够 复用 解析结构和执行计划,从而减少解析与优化的开销。而拼接字符串每次都是不同的sql语句,需要重新解析。
另外拼接字符串会有注入的风险,但是参数化不会有。因为数据库在解析阶段只确认“占位符的位置和类型”,并不会把参数值当成 SQL 语法来解析。
举个例子说明:
这是字符串拼接

sql="WHERE id IN ("+userInput+")";//如果用户输入1)OR1=1--//最终sql是WHEREidIN(1)OR1=1--)

参数化

WHEREidIN(?)//输入1)OR1=1--//数据库看到id="1) OR 1=1 --"

数据库处理流程是:
1.先解析 SQL 结构
2.确认:? 是一个“值占位符”
3.SQL 语法树已经固定
4.再把参数值“绑定”为数据

完结撒花~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 9:26:04

LU, AI人工智能自动记录水迷宫 AI人工智能Barnes迷宫

迷宫作为学习与记忆研究的经典实验工具&#xff0c;应用历史已达数十年&#xff0c;至今仍被广泛采用。其中&#xff0c;电迷宫与食物迷宫虽为常用类型&#xff0c;但实验操作中需把控的细节较多&#xff08;例如食物迷宫实验要求动物在测试前进行禁食处理&#xff09;&#xf…

作者头像 李华
网站建设 2026/6/7 7:20:49

LobeChat实时翻译插件开发案例分享

LobeChat 实时翻译插件开发实践&#xff1a;从架构设计到工程落地 在多语言协作日益频繁的今天&#xff0c;一个中国开发者与巴西同事讨论项目细节&#xff0c;另一位法国用户正用母语向智能客服提问——如果AI助手能自动“听懂”并“回应”每一种语言&#xff0c;那会是怎样一…

作者头像 李华
网站建设 2026/6/4 23:31:41

【计算机毕业设计案例】基于javaweb儿童绘本租阅平台 基于Javaweb的二手儿童绘本交易系统设计与实现(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/9 7:25:09

springboot基于云计算的在线教育平台设计与开发

基于SpringBoot云计算的在线教育平台设计与开发 第一章 系统开发背景与意义 在数字化教育转型加速的背景下&#xff0c;传统在线教育平台逐渐暴露诸多短板&#xff1a;课程资源存储分散、访问速度受地域限制&#xff0c;高峰期易出现卡顿&#xff1b;平台弹性不足&#xff0c;难…

作者头像 李华
网站建设 2026/6/4 4:14:56

Lumafly模组管理器:空洞骑士玩家的终极管理解决方案

Lumafly模组管理器&#xff1a;空洞骑士玩家的终极管理解决方案 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly Lumafly是一款专为《空洞骑士》设计的跨平台模组…

作者头像 李华
网站建设 2026/6/9 4:51:07

Etcher效率提升技巧:大文件烧录加速终极指南

Etcher效率提升技巧&#xff1a;大文件烧录加速终极指南 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 还在为8GB系统镜像烧录半小时而抓狂吗&#xff1f;&…

作者头像 李华