php - 外键值不显示

标签 php mysql sql phpmyadmin foreign-keys

假设我有 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。

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();

    }   

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

最佳答案

当您说以下内容时,我不明白您想做什么:

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/

相关文章:

php - 在网站上不间断地播放 mp3?

php - 在数据库中输入主键时出错

mysql - 无法连接到 LAMP docker 容器中的 MYSQL

php - 我错过了什么吗?在 PHP 中读取数据库似乎很啰嗦

具有自定义日期范围的 SQL 查询

php - php,有没有办法将所有通知/警告变成异常(exception)?

php - preg_match_all 'OR' 运算符

mysql - SQL语法=显示 "one table"内的关系+一张关系表

MySQL 匹配单词集

sql - BigQuery 无法保存使用函数的 View