2016-08-06 28 views
0

Sagen wir, ich habe 2 Tabellen.Fremdschlüsselwert wird nicht angezeigt

student_tbl = student_id(PK) 
       student_name 

officers_tbl = officer_id(PK) 
       officer_name 
       student_id(FK) 

Ich habe ein Autocomplete-Formular mit Daten aus dem Student_tbl. Sobald der Benutzer einen Studentennamen aus dem Autovervollständigungsformular auswählt, hat eine versteckte Eingabe einen Wert, der die ID des ausgewählten Studenten ist. Nachdem Sie das Formular Serialisierung

[stud_id] => Array 
    (
     [1] => 400 
     [2] => 404 
     [3] => 423 
     [4] => 462 
     [5] => 401 
     [6] => 413 
     [7] => 414 
     [8] => 409 
     [9] => 403 
     [10] => 0 
    ) 

     //others 

Wenn stud_id = 0, Studentennamen einfügen officer_name und NULL STUDENT_ID.
Wenn stud_id! = 0, füge NULL zu name und stud_id in student_id ein.

Nach dem Absenden des Formulars, in meiner Datenbank, wird nur der NULL eingefügt.

After submitting the form

officers_tbl

enter image description here

Wenn ich versuche, die Beziehung zwischen den beiden Tabellen zu entfernen, alle stud_id richtig Einfügen/Hinzufügen. Kann mir jemand sagen, was ist mein Fehler? Danke

Hier ist mein Code zum Einfügen der Daten

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

    } 

Es funktioniert jetzt. Ich habe meinen Laptop neu gestartet.

+0

_submitting das Formular_ - und was ist Ihr Formular und Bearbeitungscode? hat eine großartige Arbeit geleistet, das Problem zu erklären, aber einen völligen Mangel an Code, den wir betrachten und diagnostizieren konnten. – Abela

Antwort

0

Ich verstehe nicht, was Sie zu tun versuchen, wenn Sie sagen:

Wenn stud_id = 0, legen Studentennamen officer_name und NULL STUDENT_ID. Wenn stud_id! = 0, füge NULL zu name und stud_id in student_id ein.

Wenn es funktioniert, wenn Sie die Beziehung entfernen. Ich denke, dass das Problem in der Reihenfolge sein könnte, in der Sie die SQL-Einfügungen machen. Die Einfügungen in student_tbl müssen zuerst kommen oder sicher sein, dass die students_id existiert.

Vielleicht bedeutet "stud_id = 0", dass es einen neuen Schüler gibt, der noch keine "stud_id" hat, und Sie versuchen, eine NULL anstelle einer gültigen stud_id einzufügen.

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

Die FOREIGN KEY Constraint verhindert fehlerhafte Daten in die Fremdschlüsselspalte eingeführt wird, weil es einer der Werte in der Tabelle enthalten sein soll, muss sie verweist.