É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>
<code class="php">INSERT INTO message_log ... VALUES (...)</code>
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>
Par exemple :
<code class="php">$escapedString = mysql_real_escape_string("O'Brien"); $query = mysql_query("INSERT INTO message_log ... VALUES ('$escapedString', ...");</code>
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!