i am trying to create to 2 tables and inserting data into them but i am geting this error Creating Athlete the table failed SQLSTATE[23000]: Integrity constraint violation: 1217 Cannot delete or update a parent row: a foreign key constraint fails
try
{
$dropQuery = "DROP TABLE IF EXISTS Country";
$pdo->exec($dropQuery);
$dropQuery = "DROP TABLE IF EXISTS Athlete";
$pdo->exec($dropQuery);
$createQuery = "CREATE TABLE Country
(
countryID int(11) NOT NULL AUTO_INCREMENT,
name varchar(30) NOT NULL,
population decimal(10,0),
flagImage varchar(30) NOT NULL,
PRIMARY KEY (countryID)
)";
$pdo->exec($createQuery);
}
catch(PDOException $e)
{
$error = " Creating Country the table failed";
include 'error.php';
exit();
}
try
{
$createQuery = "CREATE TABLE Athlete
(
athleteId int(11) NOT NULL AUTO_INCREMENT,
lastName varchar(30) NOT NULL,
firstName varchar(30) NOT NULL,
gender char(1) NOT NULL,
image varchar(300) NOT NULL,
sport varchar(30) NOT NULL,
countryID int(11) NOT NULL,
CONSTRAINT Athlete_Country FOREIGN KEY (countryID) REFERENCES Country(countryID),
PRIMARY KEY (athleteId)
)";
$pdo->exec($createQuery);
}
catch(PDOException $e)
{
$error = " Creating Athlete the table failed";
include 'error.php';
exit();
}
try
{
$query = "INSERT INTO Country (name,population,flagImage) VALUES ('usa',324206000,'usa.jpg')";
$pdo->exec($query);
$query = "INSERT INTO Country (name,population,flagImage) VALUES ('Hungary',9823000,'hungary.jpg')";
$pdo->exec($query);
$query = "INSERT INTO Country (name,population,flagImage) VALUES ('Jamaica',2930050,'jamaica.jpg')";
$pdo->exec($query);
$query = "INSERT INTO Country (name,population,flagImage) VALUES ('United Kindom',65341183,'uk.jpg')";
$pdo->exec($query);
$query = "INSERT INTO Country (name,population,flagImage) VALUES ('Australia',25054000,'australia.jpg')";
$pdo->exec($query);
$query = "INSERT INTO Country (name,population,flagImage) VALUES ('South Africa',54956900,'southafrica.jpg')";
$pdo->exec($query);
$query = "INSERT INTO Country (name,population,flagImage) VALUES ('Ethiopia',92206005,'ethiopia.jpg')";
$pdo->exec($query);
$query = "INSERT INTO Country (name,population,flagImage) VALUES ('Poland',38437239,'poland.jpg')";
$pdo->exec($query);
$query = "INSERT INTO Country (name,population,flagImage) VALUES ('China',1379442000,'china.jpg')";
$pdo->exec($query);
}
catch(PDOException $e)
{
$error = "Creating Country data failed";
include 'error.php';
exit();
}
try
{
$query = "INSERT INTO Athlete VALUES (1,'Phelps','Michael','m','Phelps.jpg','Swimming',1)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (2,'Ledecky','Katie','f','Ledecky.jpg','Swimming',1)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (3,'Biles','Simone','f','Biles.jpg','Gymnastics',1)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (4,'Hosszu','Katinka','f','Hosszu.jpg','Swimming',2)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (5,'Bolt','Usain','m','Bolt.jpg','Athletics',3)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (6,'Kenny','Jason','m','Kenny.jpg','Cycling',4)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (7,'Danuta','Kozak','f','Danuta.jpg','Canoeing',2)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (8,'Murphy','Ryan','m','Murphy.jpg','Swimming',5)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (9,'Manuel','Simone','f','Manuel.jpg','Swimming',1)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (10,'Dirado','Maya','f','Dirado.jpg','Swimming',1)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (11,'van Niekirk','Wayde','m','vanNiekirk.jpg','Athletics',6)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (12,'Ayana','Almaz','f','Ayana.jpg','Athletics',7)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (13,'Wlodarczyk','Anita','f','Wlodarczyk.jpg','Athletics',8)";
$pdo->exec($query);
$query = "INSERT INTO Athlete VALUES (14,'Long','Qingquan','m','Long.jpg','Weightlifting',9)";
$pdo->exec($query);
}
catch(PDOException $e)
{
$error = "Creating Athlete the data failed";
include 'error.php';
exit();
}
There are two issues in your code: First, as Chin said, you have to execute your 'CREATE Country' stament before 'CREATE Athlete' stament. And second, you have an error in the'INSERT INTO Country Athlete VALUES ...', you need to remove 'Country' to make it work.