SQL更新语句中单引号字符串内符号与变量的忽略方法求助
单引号字符串SQL更新的符号/变量处理方案
情况1:要把带$BOOKING_NO$的文本原样存进数据库
直接用单引号包裹整个文本即可——SQL会将单引号内部的$和变量名视为普通字符,不会进行解析。如果文本本身包含单引号(比如Don't hesitate),需要把单引号改成两个连续单引号(Don''t hesitate),避免触发SQL语法错误。
正确SQL示例:
update xxx set xxx = 'Our Ref. $BOOKING_NO$ ....... Kind regards'
情况2:要把$BOOKING_NO$替换成实际变量值
不要直接拼接字符串,使用参数化查询是最安全且可靠的方式,既能正确替换变量,又能避免SQL注入风险:
比如Python中使用MySQL驱动的写法:
booking_num = "BK-202405" sql = """ update xxx set xxx = 'Our Ref. %s ....... Kind regards' """ cursor.execute(sql, (booking_num,))
其他编程语言(Java、PHP等)也有对应的参数化语法,核心是让数据库驱动处理变量替换逻辑,无需手动处理符号转义。
情况3:特殊环境下的转义处理
如果你的SQL引擎对$有特殊解析规则(比如部分工具会把$变量名识别为环境变量),可以用转义符处理(比如MySQL中写成\$BOOKING_NO$),但这种场景极少,优先采用前两种方案即可。
内容的提问来源于stack exchange,提问作者Neto
相关产品推荐
相关产品推荐

