UPDATE problématique

Résolu/Fermé
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021 - 27 avril 2021 à 12:11
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021 - 27 avril 2021 à 16:37
Bonjour,

je viens de constater que cette écriture d' update avec jointure ne fonctionne pas correctement....
exemple pour membre 1
$pdostat =  $bdd->prepare("UPDATE map  INNER JOIN  membres ON  membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y SET  map.tile = '/relief/tile_foret.gif', map.ressource = '/objets/arbre.gif', map.qte_ressource = 500  ");

avec un second utilisateur qui utiliserait
exemple pour membre 2
$pdostat =  $bdd->prepare("UPDATE map  INNER JOIN  membres ON  membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y SET  map.tile = '/relief/tile_prairie.gif', map.ressource = '/objets/herbe.gif', map.qte_ressource = 500");

Là, cela modifie AUSSI en table les champs chez le précédent utilisateur. (le membre 1 qui avait des arbres dans une foret se retrouve avec de l'herbe dans une prairie.!) et ainsi de suite.
En fait le dernier update appelé modifie les précédents en table !
J'ai testé sans succès avec
WHERE membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y
WHERE membres.id
WHERE membres.id= id
ce dernier devrait logiquement fonctionner mais j'ai toujours
Integrity constraint violation: 1052 Champ: 'id' dans where clause est ambigu

Quelle serait la méthode correcte pour que cet update fonctionne indépendamment de chaque utilisateur?

3 réponses

jordane45 Messages postés 36578 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 novembre 2022 4 411
27 avril 2021 à 12:42
Bonjour,

Tu veux mettre à jour un utilisateur en particulier ?
Tu connais son ID ?
Ou sinon, comment identifies tu l'utilisateur à mettre à jour ?

Car oui, il faut bien un WHERE .... mais il faut lui donner une valeur ....
là tu indiques juste id ... donc le nom d'une colonne en bdd ... mais il ne va pas deviner tout seul lequel mettre à jour...


0
yg_be Messages postés 20738 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2022 1 268
27 avril 2021 à 12:48
bonjour, as-tu essayé
WHERE membres.id= 1
?
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
Modifié le 27 avril 2021 à 16:38
Je ne peux pas mettre WHERE membres.id= 1 car je ne connais pas le numero de l'id.

j'ai tenté WHERE membres.id = $id

$id étant déclaré plus haut dans le script avec
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;

et là, c'est good. Merci de m'avoir mis sur la bonne piste!
0