Saltar al contenido

MySQL PHP Escape String ” – ¿Por qué no se guarda en la base de datos con la barra invertida?

Solución:

Permítanme comenzar diciendo que realmente no debería almacenar datos en ningún formato de escape en particular en la base de datos, lo lamentará más tarde si necesita extraerlos en otro formato o buscar los datos por alguna razón más adelante. El formato que está guardando ahora se ve bien, y agregar barras invertidas para Javascript se hace mejor en el código al pasar los datos al Javascript real.

Ahora bien, esta es la razón por la que actualmente se comporta como lo hace;

En la cuerda 'Tom's things', ' es una secuencia de escape de caracteres y en realidad solo se usa para que MySQL entienda cómo analizar la cadena SQL, nunca se guarda como está en la base de datos.

La razón por la que escapas del personaje ' en la declaración SQL que muestra para empezar es que, de lo contrario, MySQL no tiene forma de saber que la cadena no termina en la comilla simple después 'Tom.

Si usa declaraciones preparadas de MySQLi o PDO en lugar de construir sus declaraciones SQL usted mismo, MySQL le permitirá guardar valores sin cambios sin tener que escapar de nada. Esta es definitivamente la opción preferida, ya que la API de MySQL que no admite declaraciones preparadas está obsoleta de todos modos.

La barra invertida se trata como un “carácter de escape”. Si no hubiera barra invertida, su cadena terminaría en Tom pero el restante s things causaría un error de sintaxis.

los le dice a MySQL que no trate a los escapados ' como un delimitador de cadena, pero continúe hasta el próximo sin escape ' es encontrado.

Este carácter de escape solo se utiliza para fines de consulta y no se trata como parte de la cadena que desea actualizar.

Como sugirió Alvin en los comentarios, si desea mantener la barra invertida en su base de datos, debe agregarla agregando otra barra invertida de escape, es decir \. Esto haría que su consulta se vea así:

UPDATE `TABLE` SET `PERSONAL_BELONGINGS` = 'Tom\'s things'

Y los datos en la base de datos se verían así:

|Tom's things|

Puede leer más sobre cadenas literales y cómo escapar caracteres especiales en el Manual de MySQL

Sin embargo, vale la pena señalar que almacenar una cadena que ya se escapó en la base de datos es una mala práctica. Debe tener cuidado de escapar de los caracteres especiales en su código.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *