Erreur SQL UPDATE [Résolu]

Signaler
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
-
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
-
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

Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
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
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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'
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
12
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