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 :...

couv_RI58PH8MY.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
PHP Data Objects (PDO)
Suivant
Exemples d'intégration dans des formulaires