Page 1 sur 1

Integrity constraint violation

Posté : 05 oct. 2021, 11:29
par nestor94
$idMembreSession = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$pdostat = $bdd->prepare('SELECT * FROM membres WHERE id = :id');
$pdostat->bindvalue(':id', $idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();

//-- MAJ du nom de la ville et de ses coordonnées en table ville depuis la table map

$pdostat = $bdd->prepare("SELECT msg_nom_ville, pos_x, pos_y FROM map LEFT JOIN membres ON map.pos_x = membres.pos_x AND map.pos_y = membres.pos_y WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();    
if (!empty($membreSession )) { 
$msg_nom_ville = $membreSession['msg_nom_ville'];
$pos_x = $membreSession['pos_x'];
$pos_y = $membreSession['pos_y'];
}

$pdostat = $bdd->prepare('INSERT INTO map_ville (nom_ville, pos_x_map, pos_y_map) VALUES (:msg_nom_ville, :pos_x, :pos_y)');
$pdostat->bindvalue(':msg_nom_ville', $membreSession['msg_nom_ville'], PDO::PARAM_STR);
$pdostat->bindvalue(':pos_x', $membreSession['pos_x'], PDO::PARAM_STR);
$pdostat->bindvalue(':pos_y', $membreSession['pos_y'], PDO::PARAM_STR);
$pdostat->execute();

Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1052 Champ: 'pos_x' dans field list est ambigu in C:\wamp

pos_x et pos_y sont dans la table map ET la table membres, comment éviter cette erreur?

Re: Integrity constraint violation

Posté : 05 oct. 2021, 11:57
par nestor94
$pdostat = $bdd->prepare("SELECT msg_nom_ville FROM map LEFT JOIN membres ON map.pos_x = membres.pos_x AND map.pos_y = membres.pos_y WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();    
if (!empty($membreSession )) { 
$msg_nom_ville = $membreSession['msg_nom_ville'];

}
//-- MAJ du nom de la ville en table ville depuis la table map

$pdostat = $bdd->prepare('INSERT INTO map_ville (nom_ville) VALUES (:msg_nom_ville)');
$pdostat->bindvalue(':msg_nom_ville', $membreSession['msg_nom_ville'], PDO::PARAM_STR);
$pdostat->execute();


$pdostat = $bdd->prepare('SELECT * FROM membres WHERE id = :id');
$pdostat->bindvalue(':id', $idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();
if (!empty($membreSession )) { 
$pos_x = $membreSession['pos_x'];
$pos_y = $membreSession['pos_y'];
}
// mise a jour des coordonnées de la ville dans la table ville
$pdostat = $bdd->prepare("UPDATE map_ville SET pos_x_map = '$pos_x', pos_y_map = '$pos_y' WHERE nom_ville = '$msg_nom_ville'");
//$pdostat->bindvalue(':msg_nom_ville', $membreSession['msg_nom_ville'], PDO::PARAM_STR);
$pdostat->bindvalue(':pos_x', $membreSession['pos_x'], PDO::PARAM_INT);
$pdostat->bindvalue(':pos_y', $membreSession['pos_y'], PDO::PARAM_INT);
$pdostat->execute();