2016-05-27 5 views
1

Ich habe ein Formular, das es einem Benutzer ermöglicht, Punkte für mehrere Schüler einzugeben und anzugeben, für welchen Test (entweder test1, test2 oder test3) die Bewertungen aufgezeichnet würden. Ein Echo meiner Abfrage zeigt, dass nur die erste Zeile der Daten in die SQL-Anweisung UPDATE gesendet werden, während andere scheinen verkürztes zu bekommenFormularfelderwert nicht gesendet bei Aktualisierung

Hier ist mein Code (komplett abgeschnitten.):

<?php 
if (isset($_POST['submit'])) { 

    # process the form 
    $student_id = $_POST["student_id"]; 
    $subject_id = $result['subject_id']; 
    $type = $_POST["type"]; 
    $score = $_POST["score"]; 

    for($i=0; $i < count($student_id); $i++) { 
     $studentid = mysqli_real_escape_string($connection, $student_id[$i]); 
     $subjectid = mysqli_real_escape_string($connection, $subject_id); 
     $type = mysqli_real_escape_string($connection, $type); 
     $score = mysqli_real_escape_string($connection, $score[$i]); 

     $query = "UPDATE records SET $type='{$score}' WHERE student_id={$studentid} AND subject_id={$subjectid}"; 
     //$result = mysqli_query($connection, $query); 
     echo $query; 
    } 
} 
?> 

Als wenn beispielsweise die Werte 10, 11 und 12 in das Formular eingetragen ich die folgende Ausgabe von einem Echo meines $ query bekomme

UPDATE records SET test1=' 10' WHERE student_id=53 AND subject_id=2 
UPDATE records SET test1='1' WHERE student_id=54 AND subject_id=2 
UPDATE records SET test1='' WHERE student_id=55 AND subject_id=2 

und den folgenden Fehler

Hinweis: Nicht initialisierter String-Offset: 2 in Zeile ---- $ score = mysqli_real_escape_string ($ verbindung, $ score [$ i]);

Warum passiert das und wie kann ich das beheben?

Antwort

1

Sie überschreiben Array $ score. Es shoud wie folgt aussehen:

$scoreOther = mysqli_real_escape_string($connection, $score[$i]); 

und setzen $ scoreOther in Abfrage $ dann kein Tor

+0

wie Magie gearbeitet, danke. – Mena

Verwandte Themen