news 2026/5/10 12:14:21

【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/5/7 13:47:49

LobeChat图像生成插件接入Stable Diffusion全流程

LobeChat图像生成插件接入Stable Diffusion全流程 在AI助手逐渐从“能说话”向“能看、能画、能思考”演进的今天&#xff0c;用户对智能交互的期待早已不再局限于文字回复。设想这样一个场景&#xff1a;你正在策划一场科幻主题展览&#xff0c;只需对聊天框说一句“帮我设计一…

作者头像 李华
网站建设 2026/5/10 0:32:37

Diskinfo下载官网日志分析TensorRT异常退出原因

Diskinfo下载官网日志分析TensorRT异常退出原因 在AI推理系统部署的实战中&#xff0c;一个看似简单的“容器启动后立即退出”问题&#xff0c;往往让开发者耗费数小时排查。尤其是当使用NVIDIA官方提供的TensorRT镜像时&#xff0c;进程静默终止、无明显错误输出的情况屡见不…

作者头像 李华
网站建设 2026/5/10 15:19:16

压缩解压缩算法 BFP-8bit

整个算法设计基于ORAN协议中的BFP压缩算法&#xff1b;对于压缩处理&#xff0c;首先记录无符号最大值的最高有效位&#xff08;0~14&#xff09;&#xff0c;根据最高有效比特位确定压缩处理过程中的压缩因子&#xff1b;压缩处理过程用于完成对数据的压缩&#xff0c;输出压缩…

作者头像 李华
网站建设 2026/4/25 7:23:27

山东港口科技借助 TDengine 构建智慧港口“数据基石”

作者&#xff1a;山东港口, 张艳明 小T导读&#xff1a;在智慧港口的建设过程中&#xff0c;面对海量物联网设备产生的时序数据&#xff08;如设备状态、能耗、作业效率等&#xff09;的高效接入与实时分析需求&#xff0c;山东港口科技选择采用 TDengine TSDB 时序数据库作为…

作者头像 李华
网站建设 2026/5/3 18:08:46

如何将LobeChat与自有GPU资源结合实现低成本高并发?

如何将LobeChat与自有GPU资源结合实现低成本高并发&#xff1f; 在AI应用从“能用”迈向“好用”的今天&#xff0c;越来越多企业开始重新审视自己的技术选型&#xff1a;当一个客服机器人每天要处理上千次对话时&#xff0c;调用OpenAI这类云端API的成本是否可持续&#xff1f…

作者头像 李华
网站建设 2026/4/23 12:08:00

论文AI率爆表?实测这款降AI工具,10分钟把AIGC从95%降到安全线以内!

✅ 一文看懂如何降低ai率、稳过论文检测 后台不少人问我&#xff1a; “论文的AI率太高怎么办&#xff1f;导师说要降低ai率&#xff0c;但我试了好几个免费降ai率工具都不太行。” 我当时也焦虑过。首稿检测AI率95%&#xff0c;直接被退回来。后来陆续试了十几款论文降aigc、a…

作者头像 李华