Problème : You have an error in your SQL syntax...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème : You have an error in your SQL syntax...

Re: Problème : You have an error in your SQL syntax...

par biboupat » 19 août 2010, 15:12

OK je vais faire ça, et je vous tiens au courant, mais pas avant lundi, car "week-end campagne", pour ce changer les idées. En tout cas merci pour vos messages.

Re: Problème : You have an error in your SQL syntax...

par AB » 19 août 2010, 01:44

C'est un bin's ton code. tu devrais le refaire.

Déjà pourquoi trois scripts pour faire ta modification ? Tu pourrais pas regrouper ça sur une seule page ? ou au minimum regrouper les 2 et 3 ?

Et puis on écrit pas :
$id  = @$_POST["id_dvd"] ;
pas plus que
@$id  = $_GET["iddvd"] ;
mais entre autre :
$id  = isset($_POST["id_dvd"]) ? $_POST["id_dvd"] : '';
//et
$id  =  isset($_GET["iddvd"]) ? $_GET["iddvd"]  : '';
Pour la syntaxe voir des explications ici

Pourquoi aussi employer des index différents "id_dvd" pour les $_POST et "iddvd" pour les $_GET ? Pour t'embrouiller ?

Manifestement tu n'a pas suffisamment de bases pour faire ce que tu veux faire. Faudrait faire un peu plus de tutos et d'exercices avant de commencer à programmer un véritable site sinon t'a pas fini de t'arracher les cheveux :wink:

Commences d'abord par essayer de regrouper tes deux derniers scripts de modification en un seul en tenant compte des remarques que j'ai faites plus haut et montres nous ton code.

Re: Problème : You have an error in your SQL syntax...

par biboupat » 18 août 2010, 22:46

Houaaaaaaaaaaaa je vais devenir fou, je ne m'y retrouve pas dans ces id-dvd iddvd $id et id....

Est-ce que tu peux jeter un œil sur mes codes suivants :

modification2.php

Code : Tout sélectionner

<?php require "var.inc" ?> <?php require "header.php" ?> <?php require "menu.php" ?> <?php //récupération de la variable d'URL qui va nous permettre de savoir quel enregistrement modifier @$id = $_GET["iddvd"] ; //requête SQL $sql = "SELECT * FROM dvd WHERE id_dvd = ".$id ; //exécution de la requête $requete = mysql_query($sql, $cnx) OR die( mysql_error() ) ; //affichage des données if ($result = mysql_fetch_object($requete)) { ?> <form name="insertion" action="modification3.php" method="POST"> <table> <tr><td>ID </td><td> <input type="text" name="id_dvd" value="<?php echo($result->id_dvd) ;?>" disabled></td></tr> <tr><td>Rubrique </td><td> <input type="text" name="rub" value="<?php echo($result->rub) ;?>" disabled /> <SELECT name="rub" size="1"> <OPTION value="Autres" selected> Autre <OPTION value="Documentaire"> Documentaire <OPTION value="Enfant"> Enfant <OPTION value="Fantastique"> Fantastique <OPTION value="Films_musicaux"> Films musicaux <OPTION value="Humour"> Humour <OPTION value="Sagas"> Sagas <OPTION value="Spectacles"> Spectacles <OPTION value="Tous_publics"> Tous publics <OPTION value="Westerns"> Westerns </SELECT></td></tr> <tr><td>Nom </td><td><input type="text" name="nom" value="<?php echo($result->nom) ;?>"></td></tr> <tr><td>Sortie </td><td><input type="text" name="sor" value="<?php echo($result->sor) ;?>"></td></tr> <tr><td>Commentaire </td><td><input type="text" name="com" value="<?php echo($result->com) ;?>"></td></tr> <tr><td>Affiche </td><td><input type="text" name="aff" value="<?php echo($result->aff) ;?>"></td></tr> <tr><td colspan="2"><input type="submit" value="modifier"></td></tr> </table> </form> <?php }//fin if ?> <?php require "footer.php" ?>
modification3.php

Code : Tout sélectionner

<?php require "var.inc" ?> <?php require "header.php" ?> <?php require "menu.php" ?> <?php //récupération des valeurs des champs: //id : $id = @$_POST["id_dvd"] ; //rub : $rub = $_POST["rub"] ; //nom : $nom = $_POST["nom"] ; //sortie : $sor = $_POST["sor"] ; //Commentaie: $com = $_POST["com"] ; //Affiche: $aff = $_POST["aff"] ; //récupération de l'identifiant du DVD: $id = @$_POST["id_dvd"] ; //création de la requête SQL: $sql = "UPDATE dvd SET id_dvd = ($id) rub = ($rub), nom = ($nom), sor = ($sor), com = ($com), aff = ($aff) WHERE id_dvd = ($id) " ; //exécution de la requête SQL: $requete = mysql_query($sql, $cnx) OR die( mysql_error() ) ; //affichage des résultats, pour savoir si la modification a marchée: if($requete) { echo("La modification à été correctement effectuée ") ; } else { echo("La modification à échouée") ; } ?> <?php require "footer.php" ?>
Super merci

Re: Problème : You have an error in your SQL syntax...

par xTG » 18 août 2010, 21:09

Dans modification2.php tu n'as pas mis de champs id_dvd, champ que tu tentes de récupérer dans modification3.php

Tu n'aurais pas mis de @ que tu aurais vu l'erreur tout de suite. ^_-

Re: Problème : You have an error in your SQL syntax...

par biboupat » 18 août 2010, 20:55

merci pour ces réponses !

J'ai saisie ton code et la page modification3.php est passée. J'ai même eu le message de confirmation de la modification à l'écran, sans erreur. Sur la page d'affichage de la liste de mes dvd, la ligne modifiée est restée la même. Elle n'est pas, modifiée ?? Même après un F5 et un vidage du cache de Firefox...
Peut-être encore un problème avec ma requête sql sur modification3 ??

Que dois je faire ?

Merci

Re: Problème : You have an error in your SQL syntax...

par AB » 18 août 2010, 18:05

ET pour compléter, lorsque tu récupère tes données de ta base, utilise stripslashes()
Pourquoi faire :?:

Re: Problème : You have an error in your SQL syntax...

par sylvaing26 » 18 août 2010, 09:30

ET pour compléter, lorsque tu récupère tes données de ta base, utilise stripslashes()

Re: Problème : You have an error in your SQL syntax...

par AB » 18 août 2010, 04:30

Bah tu vois quand on écrit clairement, c'est plus facile pour trouver les erreurs :wink:
J'ai édité mon code pour corriger.

Sinon, non :non: , tu n'as pas à enlever mysql_real_escape_string car ce n'est pas uniquement de sécurité qu'il s'agit mais aussi pour ajouter des '\' devant des ' etc. et donc pour éviter que ta chaine soit rompue. Si tu n'utilises pas cette fonction tu auras rapidement des erreurs quand tu rentreras du texte, c'est certain. C'est pour cette raison que tu devrais l'utiliser dans toutes tes requêtes (insertion, update...) sans exceptions. C'est ce que conseille le manuel php. Regardes la doc de la fonction pour t'en convaincre :
Cette fonction doit toujours (avec quelques exceptions) être utilisée pour protéger vos données avant d'envoyer la requête à MySQL.
Et c'est pareil avec mysqli, (pdo ayant un autre système).

Cela dit c'est certain que si tu es sûr de rentrer un nombre comme variable, tu peux t'en passer.

Re: Problème : You have an error in your SQL syntax...

par biboupat » 17 août 2010, 23:14

J'ai fais la modif dans modification3.php. Tout ce passe bien mise à part que la modification ne s'effectue pas sur la base. Pourtant je n'ai pas de message d'errreur. J'ai même " La modification à été correctement effectuée "

Code : Tout sélectionner

<?php require "header.php" ?> <?php require "var.inc" ?> <?php require "menu.php" ?> <?php // on se connecte $cnx = mysql_connect($host, $name, $pass) OR die( mysql_error() ); // on selectionne la base de données $cnxbase = mysql_select_db($base) OR die( mysql_error() ); //récupération des valeurs des champs: //id : $id = @$_POST["id_dvd"] ; //rub : $rub = $_POST["rub"] ; //nom : $nom = $_POST["nom"] ; //sortie : $sor = $_POST["sor"] ; //Commentaie: $com = $_POST["com"] ; //Affiche: $aff = $_POST["aff"] ; //récupération de l'identifiant du DVD: $id = @$_POST["id_dvd"] ; //création de la requête SQL: //$sql = "UPDATE dvd SET id_dvd = '$id', rub = '$rub', nom = '$nom', sor = '$sor', com = '$com', aff = '$aff', WHERE id_dvd = ".$id ; $sql = "UPDATE dvd SET id_dvd = '".mysql_real_escape_string($id)."', rub = '".mysql_real_escape_string($rub)."', nom = '".mysql_real_escape_string($nom)."', sor = '".mysql_real_escape_string($sor)."', com = '".mysql_real_escape_string($com)."', aff = '".mysql_real_escape_string($aff)."' WHERE id_dvd = '".mysql_real_escape_string($id)."'" ; //exécution de la requête SQL: $requete = mysql_query($sql, $cnx) OR die( mysql_error() ) ; //affichage des résultats, pour savoir si la modification a marchée: if($requete) { echo("La modification à été correctement effectuée ") ; } else { echo("La modification à échouée") ; } ?> <?php require "footer.php" ?>
PS :
J'ai fais une modif dans ton code, il y avait une inversion entre " apostrophe " et " guillemet " juste après id_dvd : WHERE id_dvd = "'
sinon j'ai une erreur : Parse error

C'est presque ça...

Peut tu me passer le code sans les : mysql_real_escape_string. Car ses pages sont destinées à être utilisées depuis un disque dur externe avec un serveurs portable comme wampMSS ou autre. Elles n'irons pas sur internet.

merci

Re: Problème : You have an error in your SQL syntax...

par AB » 17 août 2010, 21:21

C'est une bonne habitude de concaténer les variables dans la requête car cela permet de mieux voir les erreurs, et puis aussi tu devrais normalement utiliser mysql_real_escape_string pour protéger tes variables dans toutes tes requêtes. Essaies :
 $sql = "UPDATE dvd SET 
id_dvd = '".mysql_real_escape_string($id)."', 
rub = '".mysql_real_escape_string($rub)."', 
nom = '".mysql_real_escape_string($nom)."', 
sor = '".mysql_real_escape_string($sor)."', 
com = '".mysql_real_escape_string($com)."', 
aff = '".mysql_real_escape_string($aff)."' 
WHERE id_dvd = '".mysql_real_escape_string($id)."'" ;
A noter qu'il ne faut jamais de virgule juste avant le WHERE

Re: Problème : You have an error in your SQL syntax...

par biboupat » 17 août 2010, 20:17

J'ai pris le tore par les cornes !
- J'ai changé le champ " id" par " id_dvd "
- J'ai changé quelques " id " en " id_dvd" dans le code
- j'ai remis les bonne terminaisons de mes WHERE (par rapports au tuto original

Maintenant :
- Affichage du tableau de mes dvd = OK
- Ajout d'un DVD = OK
- Modification d'une fiche d'un DVD :
- - - Modification1 = ok
- - - Modification2 = ok (enfin)
Le problème se pose maintenant dur le fichier " modification3 "

Erreur :
 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 'WHERE id_dvd = ''' at line 1
Au niveau encore du " WHERE "

Je te repasse les fichiers "modification 1, 2 et 3" avec mes modif de " id " en " id_dvd".

_________________________________________________________
Modification1.php

Code : Tout sélectionner

<?php require "header.php" ?> <?php require "var.inc" ?> <?php // on se connecte $cnx = mysql_connect($host, $name, $pass) OR die( mysql_error() ); // on selectionne la base de données $cnxbase = mysql_select_db($base) OR die( mysql_error() ); // requête SQL: $sql = "SELECT * FROM dvd ORDER BY nom " ; // exécution de la requête: $requete = mysql_query( $sql, $cnx ) OR die( mysql_error() ) ; // affichage des données: while ($result = mysql_fetch_object($requete)) { echo (" <table><tr> <td class'modif'>".$result->rub."</td> <td class='modif'> ".$result->nom."</td> <td class='modif'><a href=\"modification2.php?iddvd=".@$result->id_dvd."\">Modifier</a></td>\n </tr></table> ") ; } ?> <?php require "footer.php" ?>
_________________________________________________________

Modification2.php

Code : Tout sélectionner

<?php require "header.php" ?> <?php require "var.inc" ?> <?php // on se connecte $cnx = mysql_connect($host, $name, $pass) OR die( mysql_error() ); // on selectionne la base de données $cnxbase = mysql_select_db($base) OR die( mysql_error() ); //récupération de la variable d'URL qui va nous permettre de savoir quel enregistrement modifier @$id = $_GET["iddvd"] ; //requête SQL $sql = "SELECT * FROM dvd WHERE id_dvd = ".$id ; //exécution de la requête $requete = mysql_query($sql, $cnx) OR die( mysql_error() ) ; //affichage des données if ($result = mysql_fetch_object($requete)) { ?> <form name="insertion" action="modification3.php" method="POST"> <table> <tr><td>Rubrique </td><td><input type="text" name="rub" value="<?php echo($result->rub) ;?>"></td></tr> <tr><td>Nom </td><td><input type="text" name="nom" value="<?php echo($result->nom) ;?>"></td></tr> <tr><td>Sortie </td><td><input type="text" name="sor" value="<?php echo($result->sor) ;?>"></td></tr> <tr><td>Commentaire </td><td><input type="text" name="com" value="<?php echo($result->com) ;?>"></td></tr> <tr><td>Affiche </td><td><input type="text" name="aff" value="<?php echo($result->aff) ;?>"></td></tr> <tr><td colspan="2"><input type="submit" value="modifier"></td></tr> </table> </form> <?php }//fin if ?> <?php require "footer.php" ?>
_________________________________________________________

modification3.php

Code : Tout sélectionner

<?php require "var.inc" ?> <?php // on se connecte $cnx = mysql_connect($host, $name, $pass) OR die( mysql_error() ); // on selectionne la base de données $cnxbase = mysql_select_db($base) OR die( mysql_error() ); //récupération des valeurs des champs: //id : $id = @$_POST["id_dvd"] ; //rub : $rub = $_POST["rub"] ; //nom : $nom = $_POST["nom"] ; //sortie : $sor = $_POST["sor"] ; //Commentaie: $com = $_POST["com"] ; //Affiche: $aff = $_POST["aff"] ; //récupération de l'identifiant du DVD: $id = @$_POST["id_dvd"] ; //requête SQL: $sql = "UPDATE dvd SET id_dvd = '$id', rub = '$rub', nom = '$nom', sor = '$sor', com = '$com', aff = '$aff', WHERE id_dvd = ".$id ; //exécution de la requête SQL: $requete = mysql_query($sql, $cnx) OR die( mysql_error() ) ; //affichage des résultats, pour savoir si la modification a marchée: if($requete) { echo("La modification à été cORrectement effectuée") ; } else { echo("La modification à échouée") ; } ?> <?php require "footer.php" ?>
________________________________________________________________

Super merci....

Re: Problème : You have an error in your SQL syntax...

par AB » 17 août 2010, 19:19

Ben c'est peut-être que la variable $id que tu met dans ta requête ne correspond à aucun id existant dans ta table.
En tous cas si page blanche => pas d'erreur dans la requête :wink:

Re: Problème : You have an error in your SQL syntax...

par biboupat » 17 août 2010, 19:05

Là, j'ai une page blanche !
Rien dans le code source non plus (entre <body> et </body>

Re: Problème : You have an error in your SQL syntax...

par AB » 17 août 2010, 19:00

Ben oui tu n' as pas de colonne id_div donc le message d'erreur te répond que cette colonne n'existe pas.

Vu que ta colonne s'appelle "id" essaies
$sql = "SELECT * FROM dvd WHERE id ='".$id."'";

Re: Problème : You have an error in your SQL syntax...

par biboupat » 17 août 2010, 18:51

La voici...

CREATE TABLE IF NOT EXISTS `dvd` (
`id` mediumint(9) NOT NULL AUTO_INCREMENT COMMENT 'Identifiant du DVD',
`rub` text NOT NULL,
`nom` text NOT NULL,
`sor` year(4) NOT NULL COMMENT 'Année de sortie du film',
`com` longtext NOT NULL,
`aff` text NOT NULL COMMENT 'Lien vers l''affiche de la vidéo',
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Ma vidéothèque 2010 ';

Merci

Je ne sais pas moi nom plus d'où il sort ce id_dvd...? J'ai suivi le tuto du site : http://ressources.mediabox.fr/tutoriaux ... -donne-php. C'est vrai que je n'en ai pas trouvé d'autre ? Je l'ai adapté à ma base, et j'essaie de comprendre le code... J'étais plus alaise en HTML... Il faut vivre avec son temps et pour faire ce que je veux il me faut du PHP. Le HTML a ses limites ! Et puis c'est sympa de coder, j'aime bien !

Donc j'en reviens à mon problème... Je ne sais vraiment pas quoi faire et je voudrais te remercier pour tes messages... On avance, on avance...

______________

C'est vrai que l'article est intéressant. C'est un peu par fainéantise, j'avoue, que je tape le *. Mais aussi parce-que je ne sais pas si je dois mettre tous les champs ou pas ?