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'
) ";
"모든 데이터가 데이터베이스에 표시되지 않는 것은 아닙니다"라는게 무슨 뜻입니까? 때로는 행이 삽입되는 경우가 있습니다. 또는 행에 잘못된 값이있는 열이 삽입되어 있습니까? 아니면 그들의 기본값 (또는 NULL을?) 대신 예상했던 것? –
행은 항상 삽입되지만 게시 될 예정인 12 개의 변수 중 8 개가 Null입니다. – Jacques
probem이 삽입 코드와 함께 있다고 생각하지 않습니다. 아마 데이터, 나는 그것이 오류를 반환 기대. 게시되는 값은 숫자로 표시되고 실패한 문자는 텍스트로, 인코딩 문제 일 수 있으며 사용중인 MySQL 확장은 오류를 표시하지 않습니다. - (PHP를 사용하지 않으므로 정확한 구조에 익숙하지 않습니다. 다시 사용하고, 사실 INSERT IGNORE 쿼리를 처리하고 있습니까?) OR, 데이터베이스 구조 문제입니까? –