我正在使用 Ajax 提交表单。表单被传递到 PHP 服务器(当前位于 localhost),该服务器将值输入 MySQL 数据库。问题是它没有传递一个变量,并且 MySQL 不接受 NULL。
无论如何,问题在于这部分代码:
let advM = document.getElementById("advertsM");
var mailme = (advM.checked) ? "Yes":"No";
好吧,公平地说,当我用开发工具(F12)查看它时,变量的值要么是“是”,要么是“否”。
此外,当我使用 F12 工具查看通过 Ajax 提交表单的 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 (正如我在断点中放置并验证该值是一个字符串......)
欢迎任何帮助,因为我不知道如何解决这个问题。
喵喵时光机