IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Erreur dans un UPDATE


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Par défaut [Tableaux] Erreur dans un UPDATE
    Bonjour, je fait un site où les membres peuvent se connecter via des identifiants et ensuite modifier leurs informations personnelles.
    Le problème se posant ici se retrouve sur les deux UPDATE dont j'ai besoin, celui enregistrant la date et l'heure à laquelle s'est connecté l'utilisateur, et celui permettant de modifier les infos via un formulaire. Je me retrouve dans les deux cas avec l'erreur suivante :
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

    Voici le code permettant d'enregistrer la date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			$date=date("Y-m-d H:i");
    			$sql="UPDATE euro_user SET connexion='$date' WHERE nom=$pseudo ";
    			$req="mysql_query($sql) or die ('Erreur SQL !');
    Et voici le code permettant de mettre à jour les infos :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		$sql = "UPDATE euro_user SET pass='$_POST['pass']', mail='$_POST['mail']', naissance='$_POST['naissance']' WHERE nom=$_SESSION['nom'] ";
    		mysql_query($sql) or die('Erreur SQL !!');
    Merci d'avance.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			$date=date("Y-m-d H:i");
    			$sql="UPDATE euro_user SET connexion='$date' WHERE nom=$pseudo ";
    			$req="mysql_query($sql) or die ('Erreur SQL !');
    Il faut supprimer la double quote devant mysql_query.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		$sql = 'UPDATE euro_user SET pass="' . mysql_real_escape_string($_POST['pass']) . '", mail="' . mysql_real_escape_string($_POST['mail']) . '", naissance="' . mysql_real_escape_string($_POST['naissance']) . '" WHERE nom="' . mysql_real_escape_string($_SESSION['nom']) . '"';
    		mysql_query($sql) or die('Erreur SQL !!');
    ^^ Il faut penser à "sécuriser" votre code. Mais pour répondre à la question les valeurs de tableau pour être interpolées doivent être encadrées d'accolades :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "UPDATE euro_user SET pass='{$_POST['pass']}', mail='{$_POST['mail']}', naissance='{$_POST['naissance']}' WHERE nom={$_SESSION['nom']} ";
    Solution à ne surtout pas utiliser !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Par défaut
    Alors ton histoire m'a pas avancé à grand chose, délsolé. Déja, c'était pas très clair ton post alors j'ai un peu déchiffré, mais bon ça ne marche pas trop trop. Donc si t'as une autre solution, ou alors celle-ci éclaircie, dis-moi. Sinon, si quelqu'un d'autre pense avoir une solution, qu'il n'hésite pas, ça me pose vraiment problème pour la finalisation de mon site.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    L'interpolation (valable uniquement dans une chaîne délimitée par des double quotes) est le fait de remplacer une variable par sa valeur. Votre erreur de syntaxe y est surement liée puisque vous ne pouvez pas utiliser directement $_POST['X'] dans une telle chaîne (par exemple). Pour que l'interpolation soit effective, et pour ne pas rencontrer cette erreur de syntaxe, il faut l'entourer d'accolades :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "UPDATE euro_user SET pass='$_POST['pass']' ...";
    Devrait être écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "UPDATE euro_user SET pass='{$_POST['pass']}' ...";
    Mais, j'ai voulu attirer votre attention sur le fait qu'en utilisant ce procédé vous vous exposez aux failles d'injections SQL, d'où ma proposition de protéger vos données (et qui permettra de faire passer les apostrophes par exemple si vos données venaient à en contenir) grâce à la fonction mysql_real_escape_string (ça entrera en conflit avec la fonctionnalité magic_quotes_gpc si celle-ci est active).

    L'erreur (ou une autre) peut, cependant, avoir une origine bien en amont.


    Est-ce plus clair ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Par défaut
    Nikel ! Ça marche ! Merci beaucoup ^^ !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/01/2008, 18h15
  2. [Tableaux] erreur dans un code
    Par zabdaniel dans le forum Langage
    Réponses: 5
    Dernier message: 05/12/2007, 16h04
  3. [Tableaux] erreur dans une fonction
    Par eclipse012 dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2007, 10h58
  4. [Tableaux] Erreur dans Boucle
    Par mickado dans le forum Langage
    Réponses: 11
    Dernier message: 25/01/2007, 12h52
  5. [Tableaux] erreur dans mon code
    Par kcizth dans le forum Langage
    Réponses: 5
    Dernier message: 27/10/2006, 11h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo