2 pièce(s) jointe(s)
Requête d'insertion dans une table avec une clé étrangère
Bonjour à tous ! j'espère que vous allez bien ?
Alors mon problème se présente de la manière suivante : petite précision,je travaille sur windows
J'ai deux classes mère(Personne) et fille(Employer), du coup j'ai deux tables dans ma base mais la classe fille a des attributs en plus et la clé de la table Personne migre vers la table personne.
En utilisant le mode de connexion PDO, j'essai de faire une insertion dans les deux tables, celle-ci se passe bien dans la table Personne mais pour la table Employer il y'a une erreur qui se produit qui la suivante :
Citation:
Warning: PDOStatement::execute(): SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`rdv_medical`.`employer`, CONSTRAINT `employer_ibfk_1` FOREIGN KEY (`id_perso`) REFERENCES `personne` (`id_perso`)) in C:\xampp\htdocs\mesprojets\appRDVmedical\Model\EmployerManager.php on line 20
Voici mes tables :
table Personne
Pièce jointe 512674
table Employer
Pièce jointe 512678
voici mes comment j'ai exécuté mes requêtes :
add() Personne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class PersonneManager {
private $db; // Instance de PDO
public function __construct($db)
{
$this->db = $db;
}
public function add(Personne $perso)
{
$q = $this->db->prepare('INSERT INTO personne(nom, prenom, genre) VALUES(:nom, :prenom, :genre)' );
$q->bindValue(':nom', $perso->nom());
$q->bindValue(':prenom', $perso->prenom());
$q->bindValue(':genre', $perso->genre());
$q->execute();
$perso->hydrate([ 'id_perso' => $this->db->lastInsertId() ]);
} |
add() Employer :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class EmployerManager {
private $db; // Instance de PDO
public function __construct($db)
{
$this->db = $db;
}
public function add(Employer $emp)
{
$q = $this->db->prepare('INSERT INTO employer(email, pass, types) VALUES(:email, :pass, :types)');
$q->bindValue(':email', $emp->email());
$q->bindValue(':pass', $emp->pass());
$q->bindValue(':types', $emp->types());
$q->execute();
$emp->hydrate([ 'id_emp' => $this->db->lastInsertId() ]);
} |