5つのテーブルを持つデータベースがあります
students PK : ID -> anum, first, last
studentinfo PK/FK : ID -> why, student_commenets, finished, aidyear
Times PK/FK : ID -> signintime, counselor_start_time,
additional_time, finish_time
counselor PK/FK : ID -> firstcounselor, secondcounselor, thirdcounselor
Comments PK/FK : ID -> counselorcomments, additional_commenets
私はsigninpage.phpというページを持っています
そのページでは、3 つの異なるテーブル (student、studentinfo、および time) に書き込む必要があります。
私のコードはfallowsです:
if (empty($errors) === true)
{
include('core/queries/inserts.updates.selects/students.php');
include('core/queries/inserts.updates.selects/studentinfo.php');
include('core/queries/inserts.updates.selects/signintime.php');
$dbh = null;
header('location: signedin.php');
exit();
}
各ファイルは実際の挿入クエリです。(あなたがそれらを見る必要がある場合は、この投稿を更新します)
私が持っているエラーは次のとおりです。
SQLSTATE [23000]: 整合性制約違反: 1452 子行を追加または更新できません: 外部キー制約が失敗しました (
test
.times
, CONSTRAINTtimes_ibfk_2
FOREIGN KEY (id
) REFERENCESstudents
(id
) ON DELETE CASCADE ON UPDATE CASCADE)
これに加えて、最初のクエリ (students.php と 2 番目のクエリ studentinfo.php) は問題なく挿入されています。同じ ID、テーブルに挿入する signintime で問題が発生します: 回。
phpmyadmin では、両方のテーブル (studentinfo と times) が同じように構成され、学生がセッション (PK ID) を開始するため、削除時にカスケードされ、元のテーブル (student) に更新されます。
このエラーを解決するにはどうすればよいですか?
編集 :
<?php
require('core/init.php');
try
{
$null = NULL;
$query = $dbh->prepare("INSERT INTO `times` (signintime) VALUES (:signintime)");
$query->bindParam(':signintime' , $null);
$query->execute();
}
catch (PDOException $e)
{
error_log($e->getMessage());
die($e->getMessage());
}
?>