使用ajax与php进行多次更新

时间:2013-01-14 17:38:17

标签: php mysql

嘿家伙我试图使用php ang ajax更新我的数据库,但假设文本框是动态的,这就是为什么我试图使用多个更新只需点击一下按钮就可以更新数据库但是我的防火虫说"您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在' =' 100'附近使用正确的语法。在哪里student_id =' 33' AND subject_id =' 2' AND school_id =' 1'和adv'在第1行"我不太确定我的代码,因为我只是试验如何在ajax中使用php。

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 个答案:

答案 0 :(得分:2)

这里有一些问题:

  • 如果$student_grades_boy包含多个项目,则您的sql将有多个WHERE语句(您只能有1个);
  • 您需要SET与列名称之间的空格;
  • 你有一个严重的SQL注入问题;
  • 您应该切换到PDO或mysqli,因为mysql_函数已弃用。

答案 1 :(得分:1)

您似乎在SETgrade之间没有空格。

在这里添加空格应该可以解决问题:

$update_grades_boys = "UPDATE registrar_grade_archive SET ";

如果不这样做,如果您可以发布echo $ready_edit_grades_boy;的结果并更新您的问题,那将会非常有用。

答案 2 :(得分:1)

尝试

$update_grades_boys = "UPDATE registrar_grade_archive SET "; 

SET之后需要一个空格..

答案 3 :(得分:0)

你没有逃避变种,所以它可能是你的价值观中的一些“或”。

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