DoomBot:
私は、Ajaxでフォームを送信しています。フォームは、MySQLデータベースに値を入力する(現在はlocalhost上の)PHPサーバに渡されます。問題は、それが一つの変数に合格しなかったということでした、とMySQLは、NULLを受け付けられません。
とにかく、問題は、このコードの一部です:
let advM = document.getElementById("advertsM");
var mailme = (advM.checked) ? "Yes":"No";
私は開発ツール(F12)でそれを見たときまあ、公平であるために、変数の値は、いずれかの「はい」か「いいえ」でした。
また、私は、Ajaxを経由してフォームを送信するために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を編集することができれば、ウェル)「いいえ」、あなたは、例えば、「なし」のフィールドのデフォルト値を設定することができます。