Bonjour,
Je souhaite faire une requete UPDATE à l'interieur d'une boucle generée par un SELECT.
Plus simplement :
Le script effectue une première requete en recuperant le pseudo des membres (non visible dans le code ci-dessus).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php $sql = "SELECT id_enregistrement FROM membres WHERE pseudo = :pseudo"; $stmt = $dbh->prepare($sql); $stmt->BindParam(':pseudo', $pseudo); $stmt->execute(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { //on stocke dans un tableau tous les id de membre devant être modifiés $id_membre = $row['id_membre']; print_r($id_membre); $sql = "UPDATE FROM membres SET score = :score WHERE id_membre = :id_membre"; $stmt = $dbh->prepare($sql); $stmt->BindParam(':score', $score); $stmt->BindParam(':id_membre', $id_membre); $stmt->execute(); } ?>
puis une seconde pour recuperer une liste d'ID à modifier en fonction du pseudo du membre renvoyé par la première requete (visible ici)...
En local j'ai créer plusieurs membres etc... print_r($id_membre) me renvoie le numéro des enregistrements à modifier à savoir 27,28,14,15,22,25,10,12,13, '2'1 '16'.
Si au-lieu d'effectuer réellement une requete sql je remplace le code de la balise $sql par print("UPDATE FROM membres SET score = $core WHERE id_membre = $d_membre") le code s'affiche 11 fois, par contre en laissant la requete UPDATE cette dernière ne modifie que les enregistrements '27' et '2' ce qui correspond au premier enregistrement de chacun des membres.
Pourquoi ? Que faire pour que la requete soit bien effectuée 11 fois comme si c'était un print ?
Merci d'avance pour votre réponse....
Partager