假设我有两张桌子。
student_tbl = student_id(PK)
student_name
officers_tbl = officer_id(PK)
officer_name
student_id(FK)
我有一个自动填充表单,其中包含来自student_tbl的数据。一旦用户从自动填充表单中选择学生姓名,隐藏的输入将具有一个值,该值是所选学生的id。序列化表单后,
[stud_id] => Array
(
[1] => 400
[2] => 404
[3] => 423
[4] => 462
[5] => 401
[6] => 413
[7] => 414
[8] => 409
[9] => 403
[10] => 0
)
//others
当stud_id = 0时,将学生姓名插入到officer_name,将NULL插入student_id。
当stud_id!= 0时,在student_id中为name和stud_id插入NULL。
提交表单后,在我的数据库中,只插入NULL。
officers_tbl
当我尝试删除两个表之间的关系时,所有stud_id
都正确插入/添加。谁能告诉我我的错误是什么?谢谢
这是我插入数据的代码
for($x = 1; $x <= 10; $x++){
if($row['studentid'][$x] == 0){
$stud_id= NULL;
$name = $row['name'][$x];
}else{
$stud_id= $row['studentid'][$x];
$name = NULL;
}
$query= $connection->prepare("INSERT INTO officers_tbl (name, student_id)
VALUES (:name, :student_id);
$query->bindParam(':name', $name, PDO::PARAM_STR);
$query->bindParam(':student_id', $stud_id, PDO::PARAM_INT);
$query->execute();
}
现在正在运作。我重新启动了笔记本电脑。
答案 0 :(得分:0)
当你说:
时,我不明白你想做什么当stud_id = 0时,将学生姓名插入到officer_name,将NULL插入student_id。 当stud_id!= 0时,在student_id中为name和stud_id插入NULL。
如果删除关系,则工作正常。我认为问题可能在于您正在执行SQL插入的顺序。 student_tbl中的插入必须首先出现,或者确保students_id存在。
也许&#34; stud_id = 0&#34;意味着有一个没有&#34; stud_id&#34;然而,您尝试插入NULL而不是有效的stud_id。
[http://www.w3schools.com/sql/sql_foreignkey.asp][1]
FOREIGN KEY约束可防止将无效数据插入到外键列中,因为它必须是它指向的表中包含的值之一。