Bonsoir, j'ai une erreur SQL quand j'écris dans un formulaire et que j'ajoute un apostrophe, mais lorsque je ne met pas d'apostrophe la requête s’exécute normalement. La voici :
<?php
require("../config.php");
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
extract($_POST);
$sql="INSERT INTO news (titre,auteur,contenu) VALUES ('$titre','$auteur','$contenu')";
$req=mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
header('Location: index.php');
?>
Et voici l'erreur :
Erreur SQL !
INSERT INTO news (titre,auteur,contenu) VALUES ('Fermeture du site !','Maxence','Aujourd'hui !')
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 'hui !')' at line 1
Quel est le problème ?
Merci d'avance.
INSERT INTO news (titre,auteur,contenu) VALUES ('Fermeture du site !','Maxence','Aujourd'hui !')
L'apostrophe de "Aujourd'hui" bloque dans ton script. N'oublie pas le "htmlspecialchars" pour tes variables, sinon tu auras le problème avec chaque apostrophe.
$sql="INSERT INTO news (titre,auteur,contenu) VALUES ('".htmlspecialchars($titre)."','".htmlspecialchars($auteur)."','".htmlspecialchars($contenu)."')";
Après le test du code il y a de nouveau une erreur que voici :
Erreur SQL !
INSERT INTO news (titre,auteur,contenu) VALUES ('Fermeture du site !','Maxence','Aujourd'hui je ferme le site.')
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 'hui je ferme le site.')' at line 1
Le voici :
<?php
require("../config.php");
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
extract($_POST);
$sql="INSERT INTO news (titre,auteur,contenu) VALUES ('".htmlspecialchars($titre)."','".htmlspecialchars($auteur)."','".htmlspecialchars($contenu)."')";
$req=mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
header('Location: index.php');
?>
Bouarf je suis un peu fatigué ce soir dirait t'on... c'est stripslashes et pas htmlspecialchars ~~;
Désolé pour la grosse bourde.
Cela ne fonctionne toujours pas mais j'ai chercher sur google et j'ai trouver la commande "addslashes()" qui fait fonctionner le script.
Merci de votre aide.
Oui justement addslashes() est la bonne fonction.
La fonction stripslashes() va supprimer les antislashes, alors que justement il faut en ajouter.