2016-08-06 7 views
0

2つのテーブルがあるとします。外部キーの値が表示されない

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の場合、nameにはNULLを、student_idにはstud_idを挿入します。

フォームを送信した後、自分のデータベースにNULLだけが挿入されます。

enter image description here

officers_tbl

After submitting the form

私は2つのテーブル間のリレーションシップを削除しようとすると、すべての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

_フォームの送信 - フォームと処理コードは何ですか?問題を説明する素晴らしい仕事をしましたが、私たちが診断し、診断するためのコードの完全な欠如。 – Abela

答えて

0

= 0 stud_idすると、STUDENT_IDするofficer_nameとNULLに生徒の名前を挿入します。 stud_id!= 0の場合、student_idにnameおよびstud_idにNULLを挿入します。

If関係を削除すると正常に動作します。私は問題がSQLインサートを実行している順序であると思う。 student_tblの挿入物が最初に来るか、またはstudents_idが存在することを確認する必要があります。

多分 "stud_id = 0"はまだ "stud_id"がない新しい生徒がいることを意味し、有効なstud_idの代わりにNULLを挿入しようとします。

[http://www.w3schools.com/sql/sql_foreignkey.asp][1] 

それが指すテーブルに含まれる値のいずれかでなければならないため、FOREIGN KEY制約は、外部キー列に挿入されることから無効なデータを防止します。

関連する問題