2013-08-03 4 views
0

AJAX를 사용하여 양식을 통해 레코드를 추가하는 MySQL 데이터베이스가 있습니다. 콘솔에서 내 모든 데이터가 PHP 페이지에 게시되고 있으며 오류가 발생하지 않는다고 알려줍니다. 그러나 모든 데이터가 데이터베이스에 나타나지는 않습니다.자바 스크립트가 변수를 게시하고 있지만 모든 데이터가 데이터베이스에 입력되지 않았습니다.

PHP :

//set values sent from javascript 
     $evaluator = $_SESSION['id']; 
     $feedback = $_POST['feedback']; 
     $student_work = $_POST['student_work']; 
     $student = $_POST['student']; 
     $assessment = $_POST['assessment']; 
     $classwork = $_POST['classwork']; 
     $best = $_POST['best']; 
     $subject = $_POST['subject']; 
     $binder = $_POST['binder']; 
     $teacherid = $_POST['teacher']; 
     $formid = $_POST['form']; 
     $draft_flag = $_POST['s']; 
     //set draft time to use for saving/updating drafts 
     $draft_time = date("Y-m-d H:i:s"); 
     //flag that decided what we're saving, ie draft, submit, update. 
     $flag = $_POST['draft']; 
     //Querys the database to get the form name 
     $fquery = mysqli_query($GLOBALS["___mysqli_ston"], "SELECT form_name FROM forms WHERE id_form='$formid' LIMIT 1"); 
     $row = mysqli_fetch_assoc($fquery); 
     $form_name = $row['form_name']; 
     //query's the database to get the teacher's school for this evaluation 
     $tquery = mysqli_query($GLOBALS["___mysqli_ston"], "SELECT id_school FROM teachers WHERE teacher_id='$teacherid' LIMIT 1"); 
     $trow = mysqli_fetch_assoc($tquery); 
     $id_school = $trow['id_school']; 

     include_once 'functions/functions.php'; 

if ($draft_flag == "submit"){ 

//inserts collected data and sets status as submitted in the evaluations table 
$query = "INSERT INTO evaluations SET 
     id_user = '$evaluator', 
     time_submitted = LOCALTIME(), 
     date_submitted = NOW(), 
     feedback = '$feedback', 
     student_work_org = '$student_work', 
     best_works_port = '$best', 
     binder = '$binder', 
     assesment_folders = '$assessment', 
     classwork_organization = '$classwork', 
     student_desks = '$student', 
     subject_specific_rubric = '$subject', 
     id_teacher = '$teacherid', 
     id_school = '$id_school', 
     id_form = '$formid', 
     status = 'Submitted'"; 

mysqli_query($GLOBALS["___mysqli_ston"], $query); 
?> 

, 이러한 게시되지 않은 모든 변수의 아웃 : 12 게시하지 않는 8의

$feedback = $_POST['feedback']; 
$student_work = $_POST['student_work']; 
$student = $_POST['student']; 
$assessment = $_POST['assessment']; 
$classwork = $_POST['classwork']; 
$best = $_POST['best']; 
$subject = $_POST['subject']; 
$binder = $_POST['binder']; 

.

편집 : 여기 JS에서 보낸 것입니다 :

ajax.send(
      "classwork=" + classwork 
      + "&student_work=" + student_work 
      + "&feedback=" + feedback 
      + "&assessment=" + assessment 
      + "&best=" + best 
      + "&student=" + student 
      + "&subject=" + subject 
      + "&binder=" + binder 
      + "&teacher=" + teacher 
      + "&form=" + form 
      + "&draft=" + draft 
      + "&s=" + s 
      ); 

난 그냥 잘 작동되는 다음과 같은 여러 가지 다른 형태를 가지고있다. 도움에 미리 감사드립니다!

편집 :

내 구문 당신이 내게 말하려고하지 않는 한 나는 쉼표 또는 뭔가를 놓친 잘못 말하지 마십시오. (나는 그것을 확인 했으므로 그게 문제인지 의심 스럽다. :)) 나는 당신이 삽입하는 방법이 아닐 수도 있다는 것을 안다.하지만 정확히 일치한다. http://dev.mysql.com/doc/refman/5.7/en/insert.html

그냥 시도해 본 것과 똑같은 일을했다.

$query = "INSERT INTO evaluations (
     id_user, 
     time_submitted, 
     date_submitted, 
     feedback, 
     student_work_org, 
     best_works_port, 
     binder, '$binder', 
     assesment_folders, 
     classwork_organization, 
     student_desks, 
     subject_specific_rubric, 
     id_teacher, 
     id_school, 
     id_form, 
     status) 
VALUES (
     '$evaluator', 
     LOCALTIME(), 
     NOW(), 
     '$feedback', 
     '$student_work', 
     '$best', 
     '$assessment', 
     '$subject', 
     '$classwork', 
     '$student', 
     '$teacherid', 
     '$id_school', 
     '$formid', 
     'Submitted' 
) "; 
+0

"모든 데이터가 데이터베이스에 표시되지 않는 것은 아닙니다"라는게 무슨 뜻입니까? 때로는 행이 삽입되는 경우가 있습니다. 또는 행에 잘못된 값이있는 열이 삽입되어 있습니까? 아니면 그들의 기본값 (또는 NULL을?) 대신 예상했던 것? –

+0

행은 항상 삽입되지만 게시 될 예정인 12 개의 변수 중 8 개가 Null입니다. – Jacques

+0

probem이 삽입 코드와 함께 있다고 생각하지 않습니다. 아마 데이터, 나는 그것이 오류를 반환 기대. 게시되는 값은 숫자로 표시되고 실패한 문자는 텍스트로, 인코딩 문제 일 수 있으며 사용중인 MySQL 확장은 오류를 표시하지 않습니다. - (PHP를 사용하지 않으므로 정확한 구조에 익숙하지 않습니다. 다시 사용하고, 사실 INSERT IGNORE 쿼리를 처리하고 있습니까?) OR, 데이터베이스 구조 문제입니까? –

답변

1

INSERT syntax이 잘못되었습니다. 올바른 형식입니다 :

INSERT INTO <table name> (
    <field name foo> 
    <field name bar> 
    . 
    . 
    . 
) 
VALUES (
    <value for foo>, 
    <value for bar>, 
    . 
    . 
    . 
) 
+0

답을 고맙게 생각하지만, 사용하고있는 구문은 MySQL 확장 구문입니다. 사용하고있는 다른 30 개의 폼에서 잘 동작합니다. 이 양식의 일부만 제출하십시오. – Jacques