Erreur SQL UPDATE [Résolu]

payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 27 avril 2012 à 14:25 - Dernière réponse : cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention
- 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

Répondre au sujet
cs_47 197 Messages postés mardi 20 janvier 2004Date d'inscription 20 février 2013 Dernière intervention - 27 avril 2012 à 15:40
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_47
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 27 avril 2012 à 16:13
0
Utile
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
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 28 avril 2012 à 10:26
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.