는 PHP에 게시 방법과 양식을 제출하는 것은 문자열이어야한다 동안 NULL로 변수 중 하나 통과

DoomBot :

나는 아약스와 양식을 제출하고있다. 양식 MySQL 데이터베이스에 값을 입력 (현재 로컬 호스트)은 PHP 서버로 전달된다. 문제는 하나 개의 변수를 통과하지 못한 것을, 그리고 MySQL은 NULL을 허용하지 않습니다.

어쨌든, 문제는 코드의이 부분은 다음과 같습니다

let advM = document.getElementById("advertsM");
var mailme = (advM.checked) ? "Yes":"No"; 

내가 개발 도구 (F12)와 그것을보고 글쎄, 공정하게, 변수의 값 중 하나를 "예"또는 "아니오"였다.

나는 아약스를 통해 양식을 제출 F12 도구를 사용하여 XHR 코드를 보았을 때 또한, 변수는 ( mailme) 중 하나를 다시 "예"또는 "아니오"이다.

xhr3.send   (
    "HOTSPOT_NAME="+encodeURIComponent(hsname)+
    "&HTTP_USER_AGENT="+encodeURIComponent(useragent)+
    "&HTTP_ACCEPT_LANGUAGE="+encodeURIComponent(acceptedla)+
    "&FIRST_NAME="+encodeURIComponent(firstname)+
    "&EMAIL="+encodeURIComponent(useremail)+
    "&LANGUAGE="+encodeURIComponent(langua)+
    "&LINK_ORIG="+encodeURIComponent(linkorig)+
    "&MAILING_LIST"+encodeURIComponent(mailme) //mailme has a value of "Yes"/"No"
);

하지만, 아무것도 MySQL 데이터베이스에 제출되지 않았으며 나는이 오류를 가로 질러 온 PHP는 오류 로그를 확인하는 경우 :

PHP Fatal error:  Uncaught mysqli_sql_exception: Column 'MAILING_LIST' cannot be null in C:\xampp\htdocs\HS\DBinsert.php:32
Stack trace:
#0 C:\xampp\htdocs\HS\DBinsert.php(32): mysqli_stmt->execute()
#1 {main}
  thrown in C:\xampp\htdocs\HS\DBinsert.php on line 32

PHP 코드 :

$stmt = $DB->prepare("INSERT INTO users 
    (HOTSPOT_NAME, HTTP_USER_AGENT, HTTP_ACCEPT_LANGUAGE, 
    FIRST_NAME, EMAIL, LANGUAGE, 
    LINK_ORIG, MAILING_LIST) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");

$stmt->bind_param("ssssssss", $_POST['HOTSPOT_NAME'], 
    $_POST['HTTP_USER_AGENT'], $_POST['HTTP_ACCEPT_LANGUAGE'], 
    $cleaner_fname, $cleaner_email, 
    $_POST['LANGUAGE'], $_POST['LINK_ORIG'], $_POST['MAILING_LIST']);

$stmt->execute(); //line 32
$stmt->close();

그것은 분명히 문자열이어야 때 NULL을 전달 않는 이유를 내가 이해할 수없는 것은 (내가 중단 점에 넣고 값이 문자열 인 것을 확인로 ...)입니다

나는이 문제를 해결하는 방법을 알고하지 않는 한 어떤 도움도 환영 할 것이다.

감사합니다

디 마스 Pante :

나는 당신이 잊어 버린 것 같아요 =후 기호를 &MAILING_LIST당신의 XHR 코드 :

xhr3.send   (
    ...
    "&MAILING_LIST"+encodeURIComponent(mailme)
);

또한, 경우 필드는 "예"하고 받아들 (당신이 DB를 편집 할 수 있는지 잘) "아니오", 당신은 예를 들어, "아니오"에 대한 필드의 기본값을 설정 없었다.

추천

출처http://43.154.161.224:23101/article/api/json?id=277792&siteId=1