PHPにPostメソッドでフォームを送信すると、それは文字列でなければなりませんしながら、NULLなどの変数の一つ渡します

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を編集することができれば、ウェル)「いいえ」、あなたは、例えば、「なし」のフィールドのデフォルト値を設定することができます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=277794&siteId=1