假设我有 2 张 table 。
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中插入学生姓名,在student_id中插入NULL。
当stud_id != 0时,在name中插入NULL,在student_id中插入stud_id。
提交表单后,在我的数据库中,仅插入 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();
}
现在正在运行。我重新启动了笔记本电脑。
最佳答案
当您说以下内容时,我不明白您想做什么:
When stud_id = 0, insert student name to officer_name and NULL to student_id. When stud_id != 0, insert NULL to name and stud_id in student_id.
如果删除关系后工作正常。我认为问题可能出在你执行 SQL 插入的顺序上。 Student_tbl 中的插入必须排在第一位,或者确保 Students_id 存在。
也许“stud_id = 0”意味着有一个新学生还没有“stud_id”,而您尝试插入 NULL 而不是有效的 Stud_id。
[http://www.w3schools.com/sql/sql_foreignkey.asp][1]
FOREIGN KEY 约束可防止将无效数据插入到外键列中,因为它必须是它指向的表中包含的值之一。
关于php - 外键值不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38802462/