【原创】未对单引号做处理导致sql语句异常
上一篇 /
下一篇 2013-08-08 11:41:47
未对单引号做处理导致sql语句异常
今天负责产品发生了一个添加功能添加一批关键词添加不进
数据库,页面直接报404
原因:添加关键词名中存在单引号,导致sql语句异常添加失败
参考文献:
在一个字符串中,如果某个序列具有特殊的含义,每个序列以反斜线符号
(
“”)开头,称为
转义字符。 MySQL 识别下列转义字符:
0
- 一个 ASCII 0 (
NUL
) 字符。 '
- 一个 ASCII 39 单引号 (“'”) 字符。
"
- 一个 ASCII 34 双引号 (“"”) 字符。
b
- 一个 ASCII 8 退格符。
- 一个 ASCII 10 换行符。
r
- 一个 ASCII 13 回车符。
t
- 一个 ASCII 9 制表符(
TAB
)。 z
- ASCII(26) (Control-Z)。这个字符可以处理在 Windows 系统中 ASCII(26)
代表一个文件的结束的问题。(当使用
mysql database <
filename
时 ASCII(26) 可能会引起问题产生。) - 一个 ASCII 92 反斜线 (“”) 字符。
%
- 一个 ASCII 37“%”字符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
_
- 一个 ASCII 95“_”字符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。
注意如果在某些正文环境内使用“%”或“_”,将返回字符串“%”和“_”而不是“%”和“_”。
字符串中包含引号的可以有下列几种写法:
- 一个字符串用单引号“'”来引用的,该字符串中的单引号“'”字符可以用“''”方式转义。
- 一个字符串用双引号“"”来引用的,该字符串中的“"”字符可以用“""”方式转义。
- 你也可以继续使用在引号前加一个转义字符“”来转义的方式。
- 一个字符串用双引号“"”来引用的,该字符串中的单引号“'”不需要特殊对待而且不必被重复或转义。同理,一个字符串用单引号“'”来引用的,该字符串中的双引号“"”不需要特殊对待而且不必被重复或转义。
下面显示的SELECT
演示引号和转义是如何工作:
mysql> SELECT 'hello', '"hello"', '""hello""',
'hel''lo', ''hello
收藏
举报
TAG: