Es posible que desee actualizar su publicación para incluir mysql_real_escape_string () o addedlashes () como posibles soluciones ... como en uno de los comentarios a continuación, el OP indica que solo están leyendo un archivo e insertando.
James B
3
Los métodos mysql_ * no se recomiendan para uso futuro, ya que están obsoletos .
hd1
Esa es la respuesta correcta, aunque en estos días la mejor opción es usar uno de los
Ryan
10
'es el carácter de escape. Entonces tu cadena debería ser:
Esta es la pluma de Ashok
Si está utilizando algún código de front-end, debe reemplazar la cadena antes de enviar los datos al procedimiento almacenado.
Por ejemplo, en C # puede hacer
value = value.Replace("'","''");
y luego pasar el valor al procedimiento almacenado.
No estoy insertando datos manualmente, los extraigo del archivo y habrá vaklues: el bolígrafo de Ashok. Cómo insertarlo. creaetd un procedimiento para hacer esto .. cómo corregirlo.
Ashok Gupta
FWIW minor nit: la barra invertida es "el carácter de escape"; ''(dos comillas simples) es una alternativa especial permitida para "escapar" de un carácter de comillas simples.
Cualquier biblioteca que esté usando para hablar con MySQL tendrá una función de escape incorporada, por ejemplo, en PHP podría usar mysqli_real_escape_string o PDO :: quote
No estoy insertando datos manualmente, los extraigo de Archivo y habrá valores: lápiz de Ashok. Cómo insertarlo. creó un procedimiento para hacer esto ... cómo corregirlo.
Ashok Gupta
Solo una nota This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used..
NewBee
7
Si utiliza declaraciones preparadas, el conductor manejará cualquier escape. Por ejemplo (Java):
Solo una nota This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used..
NewBee
6
Hay otra forma de hacer esto que puede ser más segura o no, dependiendo de su perspectiva. Requiere MySQL 5.6 o posterior, debido a la utilización de una función de cadena específica: FROM_BASE64.
Digamos que tiene este mensaje que le gustaría insertar:
"Ah", Nick Casi Decapitado agitó una mano elegante, "un asunto sin importancia ... No es como si realmente quisiera unirme ... Pensé en postularme, pero aparentemente no cumplo con los requisitos '- "
Esa cita tiene un montón de comillas simples y dobles y sería una verdadera molestia insertarla en MySQL. Si está insertando eso desde un programa, es fácil escapar de las comillas, etc. Pero, si tiene que poner eso en un script SQL, tendrá que editar el texto (para escapar de las comillas) que podría ser propenso a errores. o sensible al ajuste de palabras, etc.
En su lugar, puede codificar el texto en Base64, por lo que tiene una cadena "limpia":
La codificación Base64 es una codificación binaria , por lo que será mejor que se asegure de obtener el juego de caracteres correcto cuando realice la codificación, porque MySQL decodificará la cadena codificada en Base64 en bytes y luego los interpretará. Asegúrese de que base64MySQL esté de acuerdo sobre cuál es la codificación de caracteres (recomiendo UTF-8).
Envolví la cadena en 50 columnas para facilitar la lectura en Stack Overflow. Puede ajustarlo a cualquier número de columnas que desee (o no ajustarlo en absoluto) y seguirá funcionando.
Solo una nota This, mysql_real_escape_string() extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used..
Respuestas:
En pocas palabras:
SELECT 'This is Ashok''s Pen.';
Entonces, dentro de la cadena, reemplace cada comilla simple con dos de ellas.
O:
SELECT 'This is Ashok\'s Pen.'
Escapa de eso =)
fuente
'es el carácter de escape. Entonces tu cadena debería ser:
Si está utilizando algún código de front-end, debe reemplazar la cadena antes de enviar los datos al procedimiento almacenado.
Por ejemplo, en C # puede hacer
y luego pasar el valor al procedimiento almacenado.
fuente
''
(dos comillas simples) es una alternativa especial permitida para "escapar" de un carácter de comillas simples.Ver mi respuesta a "Cómo escapar caracteres en MySQL"
Cualquier biblioteca que esté usando para hablar con MySQL tendrá una función de escape incorporada, por ejemplo, en PHP podría usar mysqli_real_escape_string o PDO :: quote
fuente
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
.Si utiliza declaraciones preparadas, el conductor manejará cualquier escape. Por ejemplo (Java):
fuente
Utilice este código:
Esto resolverá su problema, porque la base de datos no puede detectar los caracteres especiales de una cadena.
fuente
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
.Hay otra forma de hacer esto que puede ser más segura o no, dependiendo de su perspectiva. Requiere MySQL 5.6 o posterior, debido a la utilización de una función de cadena específica:
FROM_BASE64
.Digamos que tiene este mensaje que le gustaría insertar:
Esa cita tiene un montón de comillas simples y dobles y sería una verdadera molestia insertarla en MySQL. Si está insertando eso desde un programa, es fácil escapar de las comillas, etc. Pero, si tiene que poner eso en un script SQL, tendrá que editar el texto (para escapar de las comillas) que podría ser propenso a errores. o sensible al ajuste de palabras, etc.
En su lugar, puede codificar el texto en Base64, por lo que tiene una cadena "limpia":
SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn VkSE1uSUMwaUlBPT0K
Algunas notas sobre la codificación Base64:
base64
MySQL esté de acuerdo sobre cuál es la codificación de caracteres (recomiendo UTF-8).Ahora, para cargar esto en MySQL:
INSERT INTO my_table (text) VALUES (FROM_BASE64(' SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn VkSE1uSUMwaUlBPT0K '));
Esto se insertará sin quejas, y no tuvo que escapar manualmente ningún texto dentro de la cadena.
fuente
Debes escapar de los caracteres especiales usando el
\
carácter.Se convierte en:
fuente
Si desea mantener (') apóstrofo en la base de datos, use este código a continuación
$ new_value se puede almacenar en la base de datos.
fuente
Puedes usar este código,
si mysqli_real_escape_string () no funciona.
fuente
En PHP, use mysqli_real_escape_string .
Ejemplo del manual de PHP:
fuente
fuente
Si está usando PHP, simplemente use la función addedlashes ().
PHP Manual agrega pestañas
fuente
Para el acceso mediante programación, puede utilizar marcadores de posición para escapar automáticamente de los caracteres no seguros.
En Perl DBI, por ejemplo, puede usar:
fuente
Utilice addedlahes () o mysql_real_escape_string ().
fuente
This, mysql_real_escape_string() extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
.De la forma en que lo hago, usando Delphi:
TheString para "escapar":
Solución:
Resultado:
Esta función reemplazará todos los Char (39) con "\ '" permitiéndole insertar o actualizar campos de texto en MySQL sin ningún problema.
¡Se encuentran funciones similares en todos los lenguajes de programación!
fuente
Quizás podrías echar un vistazo a la función
QUOTE
en el manual de MySQL.fuente