2016-05-27 4 views
1

ユーザーが複数の生徒のスコアを入力し、スコアを記録するテスト(test1、test2、またはtest3のいずれか)を指定できるフォームがあります。 (。完全に遮断)私のクエリのエコー他は切り捨てられ得るように見える一方で、データの最初の行だけは、SQL UPDATE文に送信されていることを明らかにしフォームフィールドの値が更新時に送信されない

は、ここに私のコードです:として

<?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; 
    } 
} 
?> 

たとえば、値10、11および12は、私は私の$クエリ

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 

のエコーからの次の出力を取得し、フォームと、次のエラーに入力された場合

通知:初期化されていない文字列オフセット:2行目---- $ score = mysqli_real_escape_string($ connection、$ score [$ i]);

なぜこのようなことが起こり、どうすればこの問題を解決できますか?

答えて

1

配列$ scoreを上書きします。

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

と魔法のように働いていない$得点、その後

+0

問合せに$ scoreOtherを入れて、感謝:それは次のようになりshoud。 – Mena

関連する問題