外键值未显示

时间:2016-08-06 09:00:54

标签: php mysql sql phpmyadmin foreign-keys

假设我有两张桌子。

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。

After submitting the form

officers_tbl

enter image description here

当我尝试删除两个表之间的关系时,所有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();

    }   

现在正在运作。我重新启动了笔记本电脑。

1 个答案:

答案 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约束可防止将无效数据插入到外键列中,因为它必须是它指向的表中包含的值之一。