Erreur incompréhensible en PHP

Résolu/Fermé
hdiama Messages postés 188 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 2 janvier 2012 - 15 mars 2011 à 10:36
boly38 Messages postés 267 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 29 septembre 2016 - 15 mars 2011 à 15:17
Bonjour,

J'ai passé des heures dessus mais nada, je ne sais pas...

Voilà ce que j'obtiens comme message d'erreur:

Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 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 '===$_POST['mot']' at line 1

Je pense que les lignes concernées sont celles qui contiennent:

$bdd->query('SELECT * FROM table where mots_cles===$_POST[\'mot\']');

Quelqu'un saurait la cause de cette erreur?

D'avance merci!


2 réponses

boly38 Messages postés 267 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 29 septembre 2016 80
15 mars 2011 à 11:08
passe par une variable intermédiaire !

Tente quelque chose dans le style suivant :
$mot = $_POST['mot'];
$bdd->query("SELECT * FROM table where mots_cles === '$mot'"); 


Il faudrait aussi se protéger des "injections SQL" si ici la variable "mot" provient d'une saisie utilisateur, avec par exemple :
$mot = mysql_real_escape_string($_POST['mot']);
0
hdiama Messages postés 188 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 2 janvier 2012 6
15 mars 2011 à 11:16
Merci pour ta réponse, et bonne remarque pour les injections SQL :)

mais j'ai toujours l'erreur:

Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 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 '==$mot' at line 1
0
boly38 Messages postés 267 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 29 septembre 2016 80
15 mars 2011 à 15:17
ta chaîne de caractères est-elle encadrée par des "guillemets" ou des 'apostrophes' ?

car les apostrophes ne permettent pas le remplacement des variables :
$myString = "$mavar sera remplacée ici";
$myString = '$mavar ne sera pas remplacée ici';
$myString = $mavar . ' sera concaténée ici';
0