2011-01-26 22 views
7

Estoy ejecutando la consulta insert desde un script de shell que lee datos de varios archivos. Algunos de los datos a insertar contenga ' en el texto y MySQL sigue dando errores¿Cómo inserto un carácter especial como 'en 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 

Este es el texto real: Women's Development & Empowerment, Youth Affairs.

+0

este hilo puede ayudarle a: [MYSQL Escapar líneas de comando a través de Bash Scripting] (http://stackoverflow.com/questions/4383135/escaping-mysql-command-lines-via-bash-scripting) – jujule

+0

Es mejor si escapas 'character with' que \. Es porque algunos db ex: sqllite muestran un error con el carácter \ escape. Puede escribir: "Desarrollo y Empoderamiento de las Mujeres, Asuntos de la Juventud". – YROjha

Respuesta

14

tiene que escapar de la cita, así:

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

Tenga en cuenta, que si se está generando la instrucción SQL de un lenguaje como PHP, hay funciones disponibles para hacer esto para usted.

En PHP, por ejemplo, hay mysql_real_escape_string, que se encarga de eso. Tenga en cuenta que las declaraciones preparadas deben preferirse a esto, ya que es más difícil equivocarse.

Consulte también:

1

Yo necesidad de escapar del 'carácter con una barra invertida \

Mujeres \' s Desarrollo & Empoderamiento, Juventud

+0

Tengo alrededor de 30k archivos y no quiero usar sed para tener que buscar y reemplazar. Me gustaría manejar en el extremo mysql si es posible. – charan

+0

Tendrá que usar un lenguaje de programación o buscar y reemplazar el archivo para reemplazar 'with' – sissonb

1

Necesita escapar de su cita. Puedes hacer esto al duplicarlo en tu consulta de inserción; es decir, use '' en lugar de '. Es decir dos comillas simples en lugar de una comilla doble.

3

Tendrá que escapar de las cadenas de entrada antes de pasarlas a MySql.

Los list of escape character s es:

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

Cuál es el Languge lado del servidor usando?

hay muchos métodos a través de los cuales puede escapar de una cadena, ¡lo prefiero!

Por ejemplo: se puede usar mysql_escape_string los datos que están entrando en la consulta de modo que se escapará automáticamente charecters como " ' "

mysql_escape_string es una php function siempre que está utilizando php

+0

. Estoy intentando procesar algunos archivos y enviar algunos datos a mysql. He escrito un pequeño script de shell para esto. – charan

Cuestiones relacionadas