Comment échapper aux guillemets simples en PHP pour l'insertion MySQL ?

DDD
Libérer: 2024-11-02 00:49:30
original
897 Les gens l'ont consulté

How to Escape Single Quotes in PHP for MySQL Insertion?

Échapper aux guillemets simples en PHP pour l'insertion MySQL

Des erreurs MySQL peuvent survenir lors de l'insertion de données contenant des guillemets simples (') dans une base de données. Pour résoudre ce problème, il est crucial d'échapper aux guillemets simples à l'aide de techniques appropriées.

Dans vos extraits de code, vous utilisez deux requêtes INSERT pour ajouter des données de formulaire à votre base de données :

<code class="php">INSERT INTO job_log ...
VALUES
(...)</code>
Copier après la connexion
<code class="php">INSERT INTO message_log ...
VALUES
(...)</code>
Copier après la connexion
Copier après la connexion

Requête 1 :

La première requête fonctionne correctement sans échapper au guillemet simple, car vous utilisez probablement magic_quotes_gpc, qui échappe aux chaînes des variables GET, POST et COOKIE.

Requête 2 :

La deuxième requête échoue lorsqu'une chaîne contient un guillemet simple, tel que "O'Brien". Contrairement à la première requête, la chaîne de la deuxième requête n'a pas été échappée.

Pour éviter ce problème, vous devez utiliser mysql_real_escape_string() pour échapper les chaînes avant de les insérer dans la base de données. Cela ajoutera des barres obliques inverses () avant les guillemets simples :

<code class="php">INSERT INTO message_log ...
VALUES
(...)</code>
Copier après la connexion
Copier après la connexion

Par exemple :

<code class="php">$escapedString = mysql_real_escape_string("O'Brien");
$query = mysql_query("INSERT INTO message_log ... VALUES ('$escapedString', ...");</code>
Copier après la connexion

Chaînes d'échappement :

C'est une bonne pratique de échappez toujours les chaînes avant de les insérer dans une base de données, même si vous ne rencontrez pas d'erreurs. Cela empêche les attaques par injection SQL et garantit l’intégrité des données. En PHP, vous pouvez utiliser mysql_real_escape_string() ou la méthode bindParam() de la bibliothèque PDO pour échapper efficacement aux chaînes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!