Erreur UPDATE

Messages postés
43
Date d'inscription
mercredi 17 février 2016
Statut
Membre
Dernière intervention
21 mai 2016
- - Dernière réponse : jordane45
Messages postés
26497
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 octobre 2019
- 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 ;)
Afficher la suite 

1 réponse

Messages postés
26497
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 octobre 2019
316
0
Merci
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();
 }
}

ZauChoco
Messages postés
43
Date d'inscription
mercredi 17 février 2016
Statut
Membre
Dernière intervention
21 mai 2016
-
Cela me donne: La requete :1, 999999 = 0 WHERE pseudo = :pseudo
Et le level et clicVisiteUp ne change pas.
jordane45
Messages postés
26497
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 octobre 2019
316 > ZauChoco
Messages postés
43
Date d'inscription
mercredi 17 février 2016
Statut
Membre
Dernière intervention
21 mai 2016
-
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 
Commenter la réponse de jordane45