UPDATE problématique

Résolu
nestor94 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   -  
nestor94 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   -
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?
A voir également:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, as-tu essayé
WHERE membres.id= 1
?
0
nestor94 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention  
 
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