Calculer variable a valeur count dans requête update sql

Fermé
Stelino Messages postés 6 Date d'inscription vendredi 11 décembre 2015 Statut Membre Dernière intervention 11 décembre 2015 - Modifié par Stelino le 11/12/2015 à 21:27
 Utilisateur anonyme - 11 déc. 2015 à 23:03
Bonjour,

Après avoir récupérer la valeur COUNT() dans une variable $count1 et de multiplier sa valeur par 19.90 dans la variable $counter1, je voudrais insérer cette nouvelle variable dans une requête update.

Voici un exemple de mon code avec une requête préparer:

$req1=$bdd->query('SELECT COUNT(id) AS id FROM entreprise WHERE cap >= 0 AND cap <= 999');
while($count1=$req1->fetch());
{
$counter1['id'] = $count1['id'] * 19.90;
$req=$bdd->prepare('UPDATE banque SET cap = cap + ?');
$req->execute(array($counter1['id']));
}


Définition du code:

Je commence par une requête de sélection qui va récupérer le nombre des entreprises ayant un capital (cap) compris entre 0 et 999.

Ensuite je fait une boucle en attribuant fetch() à ma requête pour l'assigner sur la variable $count1.

Ensuite j'assigne la variable $count1 x 19.90 (type float sur ma bdd) à la variable $counter1.

Pour finir, je fait ma requête update préparer:

"""Update dans banque (table) le champ cap (entrée) qui est égal à cap + ? ($counter1)"""

Et j'insère ma variable avec execute juste en dessou.

ça ne fonctionne pas, l'addition ne se fait pas.

Comment puis-je effectuer ce genre de calculs ?

Merci de m'éclairer, même si il s'agit d'une requête avec injections.
A voir également:

1 réponse

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
Modifié par Nhay le 11/12/2015 à 21:52
Bonjour,
Pour commencer, ta boucle while ne sert à rien, tu fais une requête count(), donc tu n'aura qu'un résultat. Mais passons, ce n'est pas le soucis.

Pour le débogage :
- met un print_r($count1) après ton fetch
- un echo $counter1['id']; après ta multiplication
- Sur phpmyadmin fait une requête test
UPDATE banque SET cap = cap + 1


Peut-tu me dire le résultat de tout ça ?
0
Stelino Messages postés 6 Date d'inscription vendredi 11 décembre 2015 Statut Membre Dernière intervention 11 décembre 2015
11 déc. 2015 à 21:59
Merci Nhay j'essaye et je te dit ça
0
Stelino Messages postés 6 Date d'inscription vendredi 11 décembre 2015 Statut Membre Dernière intervention 11 décembre 2015
11 déc. 2015 à 22:03
Parcontre quand tu dit après c'est a dire ?
0
Stelino Messages postés 6 Date d'inscription vendredi 11 décembre 2015 Statut Membre Dernière intervention 11 décembre 2015
11 déc. 2015 à 22:04
$req1=$bdd->query('SELECT COUNT(id) AS id FROM entreprise WHERE cap >= 0 AND cap <= 999');//0.10
while($count1=$req1->fetch());
{
$counter1['id'] = print_r($count1['id']) * 19.90;
$req=$bdd->exec('UPDATE banque SET cap = cap + "'.$counter1['id'].'" WHERE id = 1');

}
0
Stelino Messages postés 6 Date d'inscription vendredi 11 décembre 2015 Statut Membre Dernière intervention 11 décembre 2015
11 déc. 2015 à 22:06
je n'ai pas trop saisie ou tu me conseille de modifier, :-/, j'éssais même avec injection, ça marche pas
0
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
11 déc. 2015 à 22:08
Nan, après, c'est sur une nouvelle instruction :
$req1=$bdd->query('SELECT COUNT(id) AS id FROM entreprise WHERE cap >= 0 AND cap <= 999'); 
$count1=$req1->fetch(); 
print_r($count1);
$counter1['id'] = $count1['id'] * 19.90; 
echo $counter1['id'];
$req=$bdd->prepare('UPDATE banque SET cap = cap + ?'); 
$req->execute(array($counter1['id'])); 
0