Erreur UPDATE

ZauChoco Messages postés 38 Date d'inscription mercredi 17 février 2016 Statut Membre Dernière intervention 21 mai 2016 - 21 mai 2016 à 16:57
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 21 mai 2016 à 20:38
Bonjour,

Je me retrouve avec l'erreur "Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /home/u464599732/public_html/index.php on line 85" (Ici la 3)

Avec une requête UPDATE.
	
if($userinfo['clicVisiteUp'] >= $userinfoxp)
    {
      $query = $bdd->prepare("UPDATE Membre SET $userinfo['level'] = $userinfo['level'] + 1, $userinfo['clicVisitUp'] = 0 WHERE pseudo = :pseudo");
        $query->execute(array('pseudo' => $_GET['pseudo']));
    }

Pourquoi ?

Merci d'avance ;)

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
21 mai 2016 à 17:06
Bonjour,

Commence par récupérer PROPREMENT les variables
(regarde ceci :http://www.commentcamarche.net/faq/1391-php-notice-undefined-index )

Puis séparer la requête de son éxécution et ajoute un bloc try/catch
Fais aussi un ECHO de la requête pour voir si c'est conforme à ce que tu attends...

Comme ceci :
//récupération "PROPRE" des variables AVANT de les utiliser
$clicVisiteUp =  !empty($userinfo['clicVisiteUp']) ? $userinfo['clicVisiteUp'] : NULL;
$pseudo = !empty($_GET['pseudo']) ? $_GET['pseudo'] : NULL;
$level = !empty($userinfo['level']) ? $userinfo['level'] : NULL;

if($clicVisiteUp >= $userinfoxp) {

 $sql = "UPDATE Membre SET ".$level." = ".$level + 1 .", ".$clicVisiteUp ." = 0 WHERE pseudo = :pseudo"	;
 $datas = array(':pseudo' => $pseudo);

 //juste au cas où histoire de vérifier :
 echo " La requete :".$sql;
 
 try{
    $query = $bdd->prepare($sql);
    $query->execute($datas);
 }catch(Exception $e){
    echo "Erreur ! " .$e->getMessage();
 }
}

0
ZauChoco Messages postés 38 Date d'inscription mercredi 17 février 2016 Statut Membre Dernière intervention 21 mai 2016
21 mai 2016 à 17:12
Cela me donne: La requete :1, 999999 = 0 WHERE pseudo = :pseudo
Et le level et clicVisiteUp ne change pas.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344 > ZauChoco Messages postés 38 Date d'inscription mercredi 17 février 2016 Statut Membre Dernière intervention 21 mai 2016
Modifié par jordane45 le 21/05/2016 à 20:38
1, 999999 = 0 ??
Ne te serais tu pas trompé dans ta requête ?
Je trouve étrange que tu passes le nom d'un champ en tant que variable .....
SET ".$level." = ".$level + 1 
0
Rejoignez-nous