0

こんにちは、php ang ajaxを使用してデータベースを更新しようとしていますが、テキストボックスが動的であると仮定すると、ボタンを1回クリックするだけで複数の更新を使用してデータベースを更新しようとしていますが、私の火災バグは「あなたにはエラーがありますSQL 構文。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。near '= '100' WHERE student_id = '33' AND subject_id = '2' AND school_id = '1' AND adv' at line 1"私はphpを使ってajaxでそれを行う方法を実験しているだけなので、私のコードではよくわかりません。

PHP:

    session_start();
    $school_id = $_SESSION['school_id'];
    $faculty_id = $_SESSION['user_id_fac'];
    $subject_id = $_POST['subject_id'];
    $year_grade_level = $_POST['year_level'];
    $subject_handeler_id = $_POST['subject_handler_id'];
    $student_grades_boy = $_POST['student_grades_boy'];
    $student_grades_girl = $_POST['student_grades_girl'];

    $update_grades_boys = "UPDATE registrar_grade_archive SET"; 

    //SET status = '0' WHERE subject_id = '$subject_id'"

    $vaues_girl = array();
    $values_boy = array();


    foreach ($student_grades_boy as $key=>$data) {
                                $student_id_B= $data['studnt_B_id'];
                                $grade_B = $data['studnt_grade_B'];

        $values_boy[$key] = 'grade = \''.$grade_B.'\' WHERE student_id = \''.$student_id_B.'\' AND subject_id = \''.$subject_id.'\' AND school_id = \''.$school_id.'\' AND advisor_faculty_id = \''.$faculty_id.'\' AND subject_handler_id = \''.$subject_handeler_id.'\' ' ;

                            }

        $values_boy = implode(', ', $values_boy);

        $ready_edit_grades_boy = $update_grades_boys . $values_boy;

        $save_grades_boy = mysql_query($ready_edit_grades_boy) or die(mysql_error());

みんなを助けてください。前もって感謝します

4

4 に答える 4

2

ここにいくつかの問題があります:

  • $student_grades_boy複数のアイテムが含まれている場合、SQL には複数のWHEREステートメントが含まれます (1 つしか持てません)。
  • SETと列名の間にスペースが必要です。
  • 深刻な SQL インジェクションの問題があります。
  • mysql_関数は非推奨であるため、PDO または mysqli に切り替える必要があります。
于 2013-01-14T17:44:28.017 に答える
1

SETと の間にスペースがないようですgrade

ここにスペースを追加すると、うまくいくはずです:

$update_grades_boys = "UPDATE registrar_grade_archive SET ";

echo $ready_edit_grades_boy;これでうまくいかない場合は、結果を投稿して質問を更新できれば、非常に役立ちます。

于 2013-01-14T17:42:16.903 に答える
1

試す

$update_grades_boys = "UPDATE registrar_grade_archive SET "; 

SET..の後にスペースが 1 つ必要です。

于 2013-01-14T17:42:36.280 に答える
0

変数をエスケープしていないため、値に ' または " が含まれている可能性があります。

http://php.net/manual/en/mysqli.real-escape-string.php

于 2013-01-14T17:41:06.863 に答える