[RESOLU] Integrity constraint violation

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Integrity constraint violation

Re: Integrity constraint violation

par nestor94 » 05 oct. 2021, 11:57

$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();


Integrity constraint violation

par nestor94 » 05 oct. 2021, 11:29

$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?