UPDATE problématique
Résolu
nestor94
Messages postés
74
Statut
Membre
-
nestor94 Messages postés 74 Statut Membre -
nestor94 Messages postés 74 Statut Membre -
Bonjour,
je viens de constater que cette écriture d' update avec jointure ne fonctionne pas correctement....
exemple pour membre 1
avec un second utilisateur qui utiliserait
exemple pour membre 2
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?
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
-
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...
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, as-tu essayéWHERE membres.id= 1
? -
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!