У меня такая ошибка, и я знаю, что с ней не так.
Uncaught mysqli_sql_exception: невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (studentsinformation
. honor
, CONSTRAINT honor_ibfk_1
FOREIGN KEY (ExamineeID
) ССЫЛКИ personal
( ExamineeID
) НА УДАЛИТЬ КАСКАД НА ОБНОВЛЕНИЕ КАСКАДА) в C: \ xampp \ htdocs \ Practice \ dummy. php: 74 Трассировка стека: # 0 C: \ xampp \ htdocs \ Practice \ dummy. php (74): mysqli_stmt-> execute () # 1 {main} добавляется в C: \ xampp \ htdocs \ Practice \ dummy. php в строке 74
Это мои коды :
else{
$sql = "SELECT FirstName, MiddleName, LastName, LastSchoolAttended From personal Where FirstName = ? And MiddleName = ? And LastName = ? And LastSchoolAttended = ? Limit 1";
$sqlhonor = "SELECT Honor1, Honor2, Honor3, Honor4 From honor Where Honor1 = ? And Honor2 = ? And Honor3 = ? And Honor4 = ? Limit 0";
$sqlparent = "SELECT Father, EducationalFather, Mother, EducationalMother, Guardian, Occupation From parent Where Father = ? And EducationalFather = ? And Mother = ? And EducationalMother = ? AND Guardian = ? AND Occupation = ? Limit 0";
if ($stmt = $conn->prepare($sql)); {
$INSERTpersonal = "INSERT INTO personal (FirstName, MiddleName, LastName, Age, HomeAddress, ContactNumber, LastSchoolAttended, Strand, SchoolAddress, Adviser) values (?,?,?,?,?,?,?,?,?,?)";
$stmt -> bind_param("ssss", $FirstName,$MiddleName,$LastName,$LastSchoolAttended);
$stmt -> execute();
$stmt -> bind_result($FirstName,$MiddleName,$LastName,$LastSchoolAttended);
$stmt -> store_result();
$rnum = $stmt -> num_rows;
if ($rnum == 0 ) {
$stmt->close();
$stmt = $conn -> prepare($INSERTpersonal);
$stmt -> bind_param("sssisissss", $FirstName,$MiddleName,$LastName,$Age,$HomeAddress,$ContactNumber,$LastSchoolAttended,$Strand, $SchoolAddress,$Adviser);
$stmt -> execute();
}
}
if ($stmthonor = $conn->prepare($sqlhonor)) {
$INSERThonor = "INSERT INTO honor (Honor1,Honor2,Honor3,Honor4) values (?,?,?,?)";
$stmthonor -> bind_param("ssss", $Honor1,$Honor2,$Honor3,$Honor4);
$stmthonor -> execute();
$stmthonor -> bind_result($Honor1,$Honor2,$Honor3,$Honor4);
$stmthonor -> store_result();
$rnum = $stmthonor -> num_rows;
if ($rnum == 0 ) {
$stmthonor->close();
$stmthonor = $conn -> prepare($INSERThonor);
$stmthonor -> bind_param ("ssss", $Honor1, $Honor2, $Honor3, $Honor4);
$stmthonor -> execute();
}
}
if ($stmtparent = $conn -> prepare ($sqlparent)) {
$INSERTparent = "INSERT INTO parent (Father, EducationalFather,Mother,EducationalMother,Guardian,Occupation) values (?,?,?,?,?,?)";
$stmtparent -> bind_param("ssssss", $Father,$EducationalFather,$Mother,$EducationalMother, $Guardian, $Occupation);
$stmtparent -> execute();
$stmtparent -> bind_result($Father,$EducationalFather,$Mother,$EducationalMother,$Guardian ,$Occupation );
$stmtparent -> store_result();
$rnum = $stmtparent -> num_rows;
if ($rnum == 0 ) {
$stmtparent->close();
$stmtparent = $conn -> prepare($INSERTparent);
$stmtparent -> bind_param ("ssssss", $Father, $EducationalFather, $Mother, $EducationalMother, $Guardian, $Occupation);
$stmtparent -> execute();
}
}
}
Все, что я хочу, - это, например, если я заполняю необходимую информацию, я хочу, чтобы они были распределены в свои собственные таблицы, но все еще имели соединение друг другу (именно поэтому я назначил FK), но в моей ситуации они не распределяются вообще, и только личная таблица была заполнена, в то время как другие пустые и показывают ошибки, подобные этой.
Скрипт моей базы данных, который я хотел, чтобы это было: введите описание изображения здесь