我正在从shell脚本执行insert
查询,该脚本从多个文件中读取数据。一些要插入的数据在文本中包含'
,MySQL不断给出错误
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's Development & Empowerment, Youth Affairs
','
Himachal Pradesh ' at line 1
这是实际文字:Women's Development & Empowerment, Youth Affairs
。
答案 0 :(得分:16)
你需要逃避引用,如下:
'Women\'s Development & Empowerment, Youth Affairs'
请注意,如果您使用PHP等语言生成SQL语句,则可以使用以下函数来执行此操作。
例如,在PHP中,有mysql_real_escape_string,它会为您处理。请注意,准备好的陈述应该优先考虑,因为更难弄错。
另见:
答案 1 :(得分:3)
在将输入字符串传递给MySql之前,必须先将其转义。
Character Escape Sequence
\0 An ASCII NUL (0x00) character.
\' A single quote (“'”) character.
\" A double quote (“"”) character.
\b A backspace character.
\n A newline (linefeed) character.
\r A carriage return character.
\t A tab character.
\Z ASCII 26 (Control-Z). See note following the table.
\\ A backslash (“\”) character.
\% A “%” character. See note following the table.
\_ A “_” character. See note following the table.
答案 2 :(得分:1)
你需要用反斜杠来逃避'角色\
妇女的发展与发展赋权,青年事务
答案 3 :(得分:1)
你需要逃避你的报价。您可以通过在插入查询中加倍来实现此目的;即使用''而不是'。这是两个单引号而不是一个双引号。
答案 4 :(得分:0)
您使用的服务器端语言是什么?
有许多方法可以通过它来逃避字符串,我更喜欢!
例如:您可以在查询中使用mysql_escape_string
您输入的数据,这样它就会自动转发" ' "
mysql_escape_string是php function
,前提是您使用php