simples simple imprimir guardar escapar dobles dentro concatenar comillas comilla mysql string quotes

mysql - simple - imprimir comillas en php



Cómo escapar de comillas simples en MySQL (16)

''es el personaje de escape. Entonces tu cuerda debería ser: Esta es la Pluma de Ashok

Editar:

Si está utilizando algún código de front-end, necesita hacer una cadena de reemplazo antes de enviar los datos al SP.

Por ej. en C # puedes hacer

value = value.Replace("''","''''");

y luego pasa el valor a SP.

¿Cómo inserto un valor en MySQL que consta de comillas simples o dobles? es decir

This is Ashok''s Pen.

La cita simple creará problemas. Puede haber otros personajes de escape.

¿Cómo se insertan los datos correctamente?


Debería escapar de los caracteres especiales con el carácter / .

This is Ashok''s Pen.

Se convierte en:

This is Ashok/'s Pen.


En PHP, usa mysqli_real_escape_string ..

Ejemplo del Manual de PHP:

<?php $link = mysqli_connect("localhost", "my_user", "my_password", "world"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s/n", mysqli_connect_error()); exit(); } mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City"); $city = "''s Hertogenbosch"; /* this query will fail, cause we didn''t escape $city */ if (!mysqli_query($link, "INSERT into myCity (Name) VALUES (''$city'')")) { printf("Error: %s/n", mysqli_sqlstate($link)); } $city = mysqli_real_escape_string($link, $city); /* this query with escaped $city will work */ if (mysqli_query($link, "INSERT into myCity (Name) VALUES (''$city'')")) { printf("%d Row inserted./n", mysqli_affected_rows($link)); } mysqli_close($link); ?>


En pocas palabras:

SELECT ''This is Ashok''''s Pen.'';

Así que dentro de la cadena, reemplace cada cita simple con dos de ellas.

O:

SELECT ''This is Ashok/'s Pen.''

Escapelo =)


Esta es una pregunta realmente antigua, pero hay otra manera de hacer esto que puede o no ser más segura, dependiendo de su perspectiva. Requiere MySQL 5.6 o posterior debido al uso de una función de cadena específica: FROM_BASE64 .

Supongamos que tiene este mensaje que desea insertar:

"Ah", Nick casi sin cabeza ondeó una mano elegante, "una cuestión de poca importancia ... No es que realmente quisiera unirme ... Pensé que presentaría una solicitud, pero al parecer no cumplí con los requisitos" ''- "

Esa cita tiene un montón de comillas simples y dobles, y sería un verdadero dolor 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 una secuencia de comandos SQL, tendrá que editar el texto (para escapar de las comillas), que podría ser propenso a errores. o sensible al envoltorio de palabras, etc.

En su lugar, puede codificar64 base-el texto, por lo que tiene una cadena "limpia":

SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn VkSE1uSUMwaUlBPT0K

Algunas notas sobre la codificación base64:

  1. La codificación base64 es una codificación binaria , por lo que es mejor que se asegure de tener el conjunto de caracteres correcto cuando se realiza la codificación, ya que MySQL decodificará la cadena codificada en base64 en bytes y luego los interpretará. Asegúrese de que base64 y MySQL estén de acuerdo con la codificación de caracteres (recomiendo UTF-8).
  2. Envolví la cuerda a 50 columnas para poder leerla en SO. Puede envolverlo en cualquier cantidad de columnas que desee (o no ajustar para nada) y seguirá funcionando.

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 ninguna queja, y no fue necesario que escapara manualmente ningún texto dentro de la cadena.


La forma en que lo hago, usando Delphi:

TheString para "escapar":

TheString=" bla bla bla ''em some more apo:S ''em and so on ";

Solución:

StringReplace(TheString, #39,''/'+#39, [rfReplaceAll, rfIgnoreCase]);

Resultado:

TheString=" bla bla bla /'em some more apo:S /'em and so on ";

Esta función reemplazará todo Char (39) con "/", lo que le permitirá insertar o actualizar campos de texto en MySQL sin ningún problema.

¡Funciones similares se encuentran en todos los lenguajes de programación!


Para el acceso programático, puede usar placeholders de placeholders para escapar automáticamente de los personajes inseguros.

En Perl DBI, por ejemplo, puede usar:

my $string = "This is Ashok''s pen"; $dbh->do("insert into my_table(my_string) values(?)",undef,($string));


Puedes usar este código

<?php $var = "This is Ashok''s Pen."; addslashes($var);?>

si mysqli_real_escape_string no funciona


Si desea mantener ('') el apóstrofo en la base de datos, use este código a continuación

$new_value = str_replace("''","/'", $value);

$ new_value puede almacenar en la base de datos.


Si usa declaraciones preparadas, el controlador manejará cualquier escape. Por ejemplo (Java):

Connection conn = DriverManager.getConnection(driverUrl); conn.setAutoCommit(false); PreparedStatement prepped = conn.prepareStatement("INSERT INTO tbl(fileinfo) VALUES(?)"); String line = null; while ((line = br.readLine()) != null) { prepped.setString(1, line); prepped.executeQuery(); } conn.commit(); conn.close();



Usa este código:

<?php $var = "This is Ashok''s Pen."; mysql_real_escape_string($var);?>

Esto resolverá su problema porque la base de datos no puede detectar el carácter especial de la cadena.




use ya sea addslahes () o mysql_real_escape_string


$var = mysqli_real_escape_string($conn, $_POST[''varfield'']);