Gestion des apostrophes dans le texte des requêtes
Dans le cas de l’utilisation de requêtes non préparées, un problème peut se poser si une chaîne de caractères littérale présente dans une requête contient une apostrophe.
Exemple (insertion dans une base de données MySQL d’une donnée qui contient une apostrophe)
<?php
// Désactiver le rapport d'erreur.
mysqli_report(MYSQLI_REPORT_OFF);
// Donnée qui pose problème (peut être saisie innocemment
// dans un formulaire).
$nom = "L'Atout Réussite";
$prix_ht = 10;
// Requête d'insertion.
$sql = "INSERT INTO collection(nom,prix_ht) " .
"VALUES('$nom',$prix_ht)";
echo $sql,'<br />';
// Exécution.
$db = mysqli_connect('localhost','eniweb','web','eni');
$requête = mysqli_query($db,$sql);
echo mysqli_error($db),'<br />';
$ok = mysqli_close($db);
?>
Résultat
INSERT INTO collection(nom,prix_ht) VALUES('L'Atout Réussite',10)
You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax
to use near 'Atout Réussite',10)' at line 1
En SQL, le délimiteur de chaîne de caractères est l’apostrophe :...