Erreur SQL

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 : Erreur SQL

Re: Erreur SQL

par zeus » 26 févr. 2010, 14:20

Modération :
Puisque ta question est résolue, je l'indique en ajoutant la petite icône verte "Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

TTu peux réaliser cette opération toi-même en cliquant sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente, si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

Re: Erreur SQL

par Tonyloup35 » 26 févr. 2010, 13:33

Merci pour vos réponses!!

J'ai réussi à corriger l'erreur!!

Bonne continuation

Re: Erreur SQL

par zeus » 26 févr. 2010, 00:35

Au cas où le message de stealth35 ne soit pas suffisamment clair (sic), si tu regardes le message d'erreur, tu pourras voir la requête qu'il a exécuté. Et, dans cette requête, à la fin, dans le WHERE, l'id n'est pas présent.

Cela signifie que lors de la construction de ta requête, l'id n'a pas été ajouté.
Le gros conseil que je te donne, c'est d'utiliser une vrai concaténation pour construire tes requêtes, voir mieux encore, les masques d'interprétations :
// pas bien
$sql="UPDATE catalogue SET titre='$titre', prix='$prix', visibilite='$visibilite', type='$type', description='$description' WHERE id={$_POST['id']}";

// mieux
$sql='UPDATE catalogue SET titre="'.$titre.'", prix="'.$prix.'", visibilite="'.$visibilite.'", type="'.$type.'", description="'.$description.'" WHERE id='.$_POST['id'];

// encore mieux. Je te laisse consulter la doc de sprintf pour comprendre comment marche cette fonction
$sql = sprintf("UPDATE catalogue SET titre='%s', prix='%s', visibilite='%s', type='%s', description='%s WHERE id=%s",
    $titre, $prix, $visibilite, $type, $description, $_POST['id']);
C'est vrai que PHP propose de parser le contenu des chaines encadrées par des ", mais non seulement, c'est lourd en temps d'exécution, mais en plus, tu as des soucis d'interprétation, comme dans le cas présent.

Ah, oui, et au fait, dernière chose, quand on a un soucis avec une requête SQL générée en PHP, la 1ère étape pour débugger, c'est de faire afficher cette requête
echo $sql
et d'essayer de l'exécuter depuis PhpMyAdmin, pour voir si ça viens réellement du SQL.

Re: Erreur SQL

par stealth35 » 25 févr. 2010, 22:33

il trouve pas ton "id"

Erreur SQL

par Tonyloup35 » 25 févr. 2010, 22:15

Bonjour à tous!!

J'ai mis en ligne un catalogue de présentation de produits, avec image description et titre.
Seulement quand je veux modifier une entrée, une erreur sql s'affiche quand je la soumet.

La voici:

Code : Tout sélectionner

Erreur SQL ! UPDATE catalogue SET titre='Premier produit informatique', prix='200', visibilite='oui', type='Decoration', description='' WHERE id= 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 '' at line 1
Pourtant sur mon pc (wamp), ça fonctionne très bien.

Voici mon code:
if(!empty($_POST)){
extract ($_POST);
$ip=$_SERVER["SERVER_ADDR"];
$description=addslashes($description);
$titre=addslashes($titre);
$nom=addslashes($nom);
if ($nom == ""){
$sql="UPDATE catalogue SET titre='$titre', prix='$prix', visibilite='$visibilite', type='$type', description='$description' WHERE id={$_POST['id']}";
}
else{
$sql="UPDATE catalogue SET titre='$titre', prix='$prix', nom='$nom', visibilite='$visibilite', type='$type', description='$description' WHERE id={$_POST['id']}";
}
mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
header("Location: index.php");
}
En espérant que quelqu'un puisse me donner une réponse.

Merci beaucoup