115 votes

Comment échapper aux guillemets simples dans MySQL

Comment insérer dans MySQL une valeur composée de guillemets simples ou doubles ?

This is Ashok's Pen.

Le guillemet simple va créer des problèmes. Il peut y avoir d'autres caractères d'échappement.

Comment insérer les données correctement ?

0 votes

Cela peut être dupé martelé dans Comment prévenir l'injection SQL en PHP ? ...

141voto

Rob Points 24505

En termes simples :

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

Donc, à l'intérieur de la chaîne, remplacez chaque guillemet simple par deux guillemets.

Ou :

SELECT 'This is Ashok\'s Pen.'

Échappez-vous =)

9 votes

Vous pourriez vouloir mettre à jour votre message pour inclure mysql_real_escape_string() ou addslashes() comme solutions possibles... comme dans l'un des commentaires ci-dessous, l'OP déclare qu'il lit simplement depuis le fichier et insère.

3 votes

Les méthodes mysql_* ne sont pas recommandées pour une utilisation future, car elles sont déprécié .

0 votes

C'est la bonne réponse, bien que de nos jours, la meilleure option soit d'utiliser l'un des systèmes de gestion de l'information de l'entreprise.

12voto

Rashmi Pandit Points 9341

' est le caractère d'échappement. Donc votre chaîne devrait être :

C'est le stylo d'Ashok.

Si vous utilisez un code frontal, vous devez effectuer un remplacement de chaîne avant d'envoyer les données à la procédure stockée.

Par exemple, en C#, vous pouvez faire

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

et ensuite passer la valeur à la procédure stockée.

0 votes

Je n'insère pas les données manuellement, je les extrais du fichier, et il y aura des vaklues : Le stylo d'Ashok. Comment l'insérer. J'ai créé une procédure pour le faire. Comment la rendre correcte.

1 votes

Pour info, petit détail : barre oblique inversée est "le caractère d'échappement" ; '' (deux guillemets simples) est une alternative spéciale autorisée pour "échapper" à un caractère guillemet simple.

9voto

Paul Dixon Points 122033

Voir ma réponse à "Comment échapper aux caractères dans MySQL"

Quelle que soit la bibliothèque que vous utilisez pour communiquer avec MySQL, une fonction d'échappement sera intégrée. Par exemple, en PHP, vous pouvez utiliser la fonction suivante mysqli_real_escape_string o PDO::devis

1 votes

Je n'insère pas les données manuellement, je les extrais du fichier, et il y aura des valeurs : Le stylo d'Ashok. Comment l'insérer. j'ai créé une procédure pour le faire. comment le rendre correct.

0 votes

Juste une note, 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. .

8voto

user3818708 Points 1

Utilisez ce code :

<?php
    $var = "This is Ashok's Pen.";

    mysql_real_escape_string($var);
?>

Cela résoudra votre problème, car la base de données ne peut pas détecter les caractères spéciaux d'une chaîne.

1 votes

Juste une note, 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. .

5voto

simon622 Points 1050

Vous devez échapper aux caractères spéciaux en utilisant l'option \ caractère.

This is Ashok's Pen.

Devient :

This is Ashok\'s Pen.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X