Problème de update d'une variable [Résolu]

titan3131 78 Messages postés vendredi 26 février 2010Date d'inscription 8 juin 2016 Dernière intervention - 27 mai 2016 à 19:37 - Dernière réponse : titan3131 78 Messages postés vendredi 26 février 2010Date d'inscription 8 juin 2016 Dernière intervention
- 27 mai 2016 à 20:56
Bonjour,
Je travaille sur les bases de données et je me trouve confronté au problème suivant:
Quand je mets une valeur fixe dans mon update cela fonctionne

$bdd->exec('UPDATE membres SET niveau = 10 WHERE id = 1');

Quand je mets une valeur calculée cela ne fonctionne plus?

$niveau = $donnees['niveau']+1;
$bdd->exec('UPDATE membres SET niveau = $niveau WHERE id = 1');

Merci pour la correction car je ne vois pas l'erreur.
Afficher la suite 

2 réponses

Répondre au sujet
jordane45 19221 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 27 mai 2016 à 19:49
0
Utile
1
Bonjour,
assures toi que la valeur issue de ta variable soit bien un nombre...
Pour cela tu peux utiliser IntVal (si c'est un entier) http://php.net/manual/fr/function.intval.php ou floatval si c'est un nombre à virgule .http://php.net/manual/fr/function.floatval.php

par exemple :
$niveau = intval($donnees['niveau'])+1;


De plus.. pense à utiliser les bloc try/catch pour que ça t'affiche les éventuelles erreurs php.
Sépare également la "requête" de son éxecution pour pouvoir en faire un ECHO si besoin (pour vérifier qu'elle est bonne)
et de préférence... utilise les requêtes préparées pour éviter les injections sql.



$niveau = intval($donnees['niveau'])+1;

//préparation de la requête
$sql = 'UPDATE membres SET niveau = :niveau WHERE id = 1';
$datas = array(":niveau"=>$niveau);

//exécution de la requête
try{
  $prepare = $bdd->prepare($sql);
  $res = $prepare->execute($datas);
}catch(Exception $e){
  echo "erreur : ".$e->getMessage();
}



Bien sûr, tu auras placé au préalable au début de ton script php la ligne de code suivante :
error_reporting(E_ALL);
histoire de bien afficher les erreurs php.

Et tu n'auras pas oublié non plus de mettre, dans ton fichier de connexion à la BDD le paramètre permettant d'afficher les erreurs PDO...
Comme ceci:

<?php
//Fichier de connexion à la bdd : cnxBdd.php
 try{
   $bdd = new PDO("mysql:host=localhost;dbname=tabdd;charset=UTF8", 'user', 'password');
   $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //pour activer l'affichage des erreurs pdo
} catch(PDOException $e){
     echo 'ERROR: ' . $e->getMessage();
} 


titan3131 78 Messages postés vendredi 26 février 2010Date d'inscription 8 juin 2016 Dernière intervention - 27 mai 2016 à 20:56
merci jordane
j'apprends j'apprends
je vais pouvoir bien avancée
Cordialement
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.