Erreur SQL UPDATE [Résolu]

Messages postés
437
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
- - Dernière réponse : cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
- 28 avril 2012 à 10:26
Bonjour,

J'ai un petit script EN AJAX qui me met simplement à jour 1 champ de la base de données en cliquant sur une checkbox. La donnée reçue est "OUI" ou "NON".
Le type champ en base dans le quel je souhaite insérer cette information est "TINYINT(1)".
Lorsque j'exécute mon UPDATE ça me met :
"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 ''rdv' <gras>'1' WHERE guid 'oqvysha6dvvpbgmnuijoms59qetylthp'' at line 1</gras>"

Je convertis juste avant la valeur "OUI" en 1 et la valeur "NON" en 0. Donc je ne comprends pas mon erreur.

Voici mon code :
if( isset( $_POST['datas'] ) && isset( $_POST['guid'] ) && isset( $_POST['action'] ) )
{
  $Data = $_POST['datas']; // "Oui" ou "Non"
  $GUID = $_POST['guid']; // Unique ID du prospect
  $Action = $_POST['action']; // "rdv" ou "inscription"

  $Conn = mysql_connect($dbhost,$dbuser,$dbpass);
  mysql_select_db($dbname,$Conn);

  // On vient chercher le nom et le prenom du client a partir du GUID envoye grace a la requete AJAX depuis database.php
  $res mysql_query( "SELECT nom,prenom FROM logs WHERE GUID '".$GUID."' " ); // Execution de la requete
  while( $data = mysql_fetch_assoc( $res ) ) // Tant qu'il y a des resultats (normalement 1 seul et unique, d'ou le GUID)
  {
    // On transforme la variable $Data qui était une String, en Int
    if( strtolower( $Data ) "oui" ) $Data (int)"1";
    else $Data = (int)"0";

    // Requete qui pose probleme !!
    $res_up mysql_query("UPDATE logs SET '".$Action."' '".$Data."' WHERE guid = '".$GUID."' ") or die( mysql_error()."
".$sql ); 

    echo "
"; // Affichage
      echo "Fiche de ".htmlentities( $data['nom'] )." ".htmlentities( $data['prenom'] )." modifiée.
";
      if( $Action == "rdv" )  echo "Rendez-vous ";
      else  echo "Inscription ";
      echo " : ".$Data."";
    echo "
";
  }
  mysql_close($Conn);
}


Si vous pouviez me donner un petit coup de main pour me débugger, ça serait gentil de voter part.

En vous remarciant,

Ju'
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
3
Merci
Bonjour,

Le nom des champs dans la base de s'échappe pas avec ' mais avec ` (altgr + 7)
Tente de remplacer :
    $res_up mysql_query("UPDATE logs SET '".$Action."' '".$Data."' WHERE guid = '".$GUID."' ") or die( mysql_error()."
".$sql ); 


Par:
    $res_up mysql_query("UPDATE logs SET `".$Action."` '".$Data."' WHERE guid = '".$GUID."' ") or die( mysql_error()."
".$sql ); 



bonne après midi

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 202 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_47
Messages postés
437
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
0
Merci
Bonjour et merci de ta réponse !

Oui suis-je bête je n’avais pas fait attention à ça ! Le souci était exactement là !
Merci beaucoup et bon weekend !

Ju'
Commenter la réponse de payetonju
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
N'oublie pas de bien filtrer ce que tu mets dans ton SQL... Ici par exemple, quelqu'un pourrait écraser le champ qu'il veut en modifiant $_POST['action'] et faire ignorer la condition en bidouillant $_POST['guid'] ...

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99