2011-01-26 48 views
7

我正在從一個從多個文件讀取數據的shell腳本中執行insert查詢。有些要插入的數據包含'文本和MySQL一直給錯誤如何在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

這個線程可以幫助您提供:逃離MYSQL命令行通過Bash腳本](http://stackoverflow.com/questions/4383135/escaping-mysql-command-lines-via-bash-scripting) – jujule 2011-01-26 10:17:48

+0

它更好,如果你逃脫'字符比'\。它是因爲某些db ex:sqllite顯示\ escape字符的錯誤。你可以寫:「婦女的發展與賦權,青年事務」。 – YROjha 2017-09-15 07:25:44

回答

1

呦需要躲避'用反斜槓字符\

婦女\的發展&賦權,青年事務

+0

我有大約30K的文件,我不想用sed來做一個查找和替換。如果可能的話,我寧願在mysql端處理。 – charan 2011-01-26 10:20:45

1

你需要逃避你的報價。您可以通過在插入查詢中將其加倍來完成此操作;即使用''而不是''。這是兩個單引號,而不是一個雙引號。

3

在將它們傳遞給MySql之前,您必須先轉義輸入字符串。

list of escape character s是:

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. 
0

什麼是服務器端languge您使用?

有很多方法可以讓你逃脫字符串,我更喜歡這個!

例如:你可以使用mysql_escape_string數據您在查詢輸入所以它會自動跳脫charecters像" ' "

函數mysql_escape_string是php function您使用php