Erreur SQL UPDATE

Résolu
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 27 avril 2012 à 14:25
cs_ghuysmans99 Messages postés 3982 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'

3 réponses

cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
27 avril 2012 à 15:40
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
3
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
27 avril 2012 à 16:13
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'
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
28 avril 2012 à 10:26
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
0
Rejoignez-nous