我正在使用 Ajax 提交表單。表單被傳遞到 PHP 服務(wù)器(當(dāng)前位于 localhost),該服務(wù)器將值輸入 MySQL 數(shù)據(jù)庫(kù)。問題是它沒有傳遞一個(gè)變量,并且 MySQL 不接受 NULL。無(wú)論如何,問題在于這部分代碼:let advM = document.getElementById("advertsM");var mailme = (advM.checked) ? "Yes":"No"; 好吧,公平地說(shuō),當(dāng)我用開發(fā)工具(F12)查看它時(shí),變量的值要么是“是”,要么是“否”。此外,當(dāng)我使用 F12 工具查看通過(guò) Ajax 提交表單的 XHR 代碼時(shí),變量 ( 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");但是,當(dāng)沒有任何東西提交到 MySQL 數(shù)據(jù)庫(kù)并且我檢查了 php 錯(cuò)誤日志時(shí),我遇到了這個(gè)錯(cuò)誤: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();我無(wú)法理解的是,為什么當(dāng)它顯然應(yīng)該是一個(gè)字符串時(shí)它傳遞 NULL (正如我在斷點(diǎn)中放置并驗(yàn)證該值是一個(gè)字符串......)歡迎任何幫助,因?yàn)槲也恢廊绾谓鉀Q這個(gè)問題。
1 回答

喵喵時(shí)光機(jī)
TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
我想你可能在你的 xhr 代碼中忘記了一個(gè)=
符號(hào):&MAILING_LIST
xhr3.send ( ... "&MAILING_LIST"+encodeURIComponent(mailme));
此外,如果您的字段只接受“是”和“否”,例如,您可以將字段默認(rèn)值設(shè)置為“否”(好吧,如果您可以編輯數(shù)據(jù)庫(kù))。
- 1 回答
- 0 關(guān)注
- 140 瀏覽
添加回答
舉報(bào)
0/150
提交
取消