2017-04-03 3 views
0

ProblemAbfrage einfügen nicht in der Datenbank - MySQL

So ist der Benutzer zur Eingabe hat ein Team des leader_id und der Benutzer kann bis zu 6 student_id. Mein Problem ist, dass die Daten nicht in die Datenbank eingefügt werden. Das Problem ist unter dem Kommentar PROBLEM.

So bekomme ich zuerst die Benutzer Eingabedaten, und ich speichern die leader_id in einer separaten Variablen und die student_id ist in einem Array. Als nächstes durchlaufe ich die student_id und überprüfe, ob der Benutzer nichts in das Feld student_id eingegeben hat, und füge dann die leader_id ein. Aber wenn der Benutzer 1 oder mehr student_id eingegeben hat, dann habe ich durch das Array geloopt und die Eingänge gespeichert, die einen Wert in ihnen hatten. Dann habe ich die Daten in die Datenbank eingefügt.

Teams Database (leer)

team_id | leader_id | student_id 

PHP-Code

<?php 

error_reporting(0); 
require '../../connect.php'; 

$leader_id = $_POST['leader_id']; 
$students = array(
    $_POST['student_id_1'], 
    $_POST['student_id_2'], 
    $_POST['student_id_3'], 
    $_POST['student_id_4'], 
    $_POST['student_id_5'], 
    $_POST['student_id_6'], 
); 

$student_save = array(); 

if(!empty($leader_id)) { 

    foreach ($students as $student) { 

     if(isset($student)) { 
      array_push($student_save, $student); 
     } else { 
      $insert = mysqli_query($link, "INSERT INTO teams (leader_id) VALUES ('$leader_id')"); 

      header("Location: ../../../admin.php?message=Success!"); 

      break; 
     } 

    } 

    foreach ($student_save as $student) { 
     // PROBLEM 
     $insert = mysqli_query($link, "INSERT INTO teams ($leader_id, $student_id) VALUES ($leader_id, $student)"); 

     if($insert) { 
      header("Location: ../../../admin.php?message=Sorry we ran into an error"); 
     } else { 
      header("Location: ../../../admin.php?message=Success!"); 
     } 
    } 

} else if(empty($leader_id)){ 
    header("Location: ../../../admin.php?message=There must be a leader"); 
} 

?> 

Wenn Sie Fragen haben, können Sie mich fragen.

+0

Siehe [wie nützlich Fehlermeldungen erhalten in PHP] (http://stackoverflow.com/questions/845021/how-to-get-useful-error-messages-in-php) und benutze mysqli_error ($ link); 'um MySQL Fehler zu bekommen. Ohne die konkreten Fehler können wir raten, aber ich mag keine Rätselraten - ich mag Fakten ;-) – Qirel

+2

Sie sind weit offen für SQL-Injection. Erfahren Sie, wie Sie vorbereitete Anweisungen und parametrisierte Abfragen verwenden oder ob jemand Ihre Datenbank hackt. – miken32

+1

Und die Spaltennamen in Ihrer zweiten INSERT-Anweisung haben Dollarzeichen in ihnen. –

Antwort

1

Das Problem war:

$insert = mysqli_query($link, "INSERT INTO teams ($leader_id, $student_id) VALUES ($leader_id, $student)"); 

Es ein Dollarzeichen in den

INSERT war soll es war:

$insert = mysqli_query($link, "INSERT INTO teams (leader_id, student_id) VALUES ($leader_id, $student)"); 
Verwandte Themen