2011-01-26 13 views
7

Я выполняю запрос 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 Scripting] (http://stackoverflow.com/questions/4383135/escaping-mysql-command-lines-via-bash-scripting) – jujule

+0

Лучше, если вы избежите символа с чем. Это потому, что некоторые db ex: sqllite показывают ошибку с символом \ escape. Вы можете написать: «Развитие и расширение прав и возможностей женщин, вопросы молодежи». – YROjha

ответ

14

Вам нужно бежать цитаты, например, так:

'Women\'s Development & Empowerment, Youth Affairs' 

Обратите внимание, что если вы генерируете заявление SQL от языка, как PHP, есть в наличии, чтобы сделать это для вас функции.

В PHP, например, есть mysql_real_escape_string, который позаботится об этом для вас. Обратите внимание, что подготовленные заявления должны быть предпочтительнее, потому что это сложно сделать неправильно.

Смотрите также:

1

Yo нужно бежать 'символ с помощью обратной косой черты \

Женщины \' s Развитие & Расширение прав, по делам молодежи

+0

У меня около 30 тыс. Файлов, и я не хочу использовать sed для поиска и замены. Я бы предпочел обработать в конце mysql, если это возможно. – charan

+0

Вам нужно будет использовать язык программирования или найти и заменить на файл, чтобы заменить «с помощью» – sissonb

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

+0

Я пытаюсь обрабатывать некоторые файлы и вставлять некоторые данные в mysql. Для этого я написал небольшой сценарий оболочки. – charan

Смежные вопросы