我正在使用 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:32Stack trace:#0 C:\xampp\htdocs\HS\DBinsert.php(32): mysqli_stmt->execute()#1 {main} thrown in C:\xampp\htdocs\HS\DBinsert.php on line 32PHP代码:$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 (正如我在断点中放置并验证该值是一个字符串......)欢迎任何帮助,因为我不知道如何解决这个问题。
1 回答
喵喵时光机
TA贡献1846条经验 获得超7个赞
我想你可能在你的 xhr 代码中忘记了一个=
符号:&MAILING_LIST
xhr3.send ( ... "&MAILING_LIST"+encodeURIComponent(mailme));
此外,如果您的字段只接受“是”和“否”,例如,您可以将字段默认值设置为“否”(好吧,如果您可以编辑数据库)。
- 1 回答
- 0 关注
- 114 浏览
添加回答
举报
0/150
提交
取消