MySQL が原因で PHP PDO がこのエラーをスローする理由がわかりません。
致命的なエラー: メッセージ「SQLSTATE[23000]: 整合性制約違反: 1048 列 '免責事項' を null にすることはできません」[...] を含む例外 'PDOException' がキャッチされません
この特定のフォームのフロントエンドとバックエンドにはかなりの量のコードが含まれているため、関連する部分だけを引用します。
HTML:
<label for="disclaimer" class="container ten columns">*Blah blah legalese</label>
<input type="checkbox" name="dislcaimer" value="disclaimer">
PHP:
if(!isset($_POST['fname']) ||
!isset($_POST['sname']) ||
!isset($_POST['email']) ||
// and so on ...
!isset($_POST['dislcaimer']) ||
(
!isset($_POST['mf'])&&!isset($_POST['me'])&&!isset($_POST['ms'])&&!isset($_POST['wf'])&&!isset($_POST['we'])&&!isset($_POST['ws'])
)
)
{
died('We are sorry, but you appear to have left at least one of the mandatory fields blank.');
}
[...]
$disclaimer = $_POST['disclaimer']; // variable initialisation
PHP/PDO:
$data = array($first_name, $last_name, $email_from, $telephone, $dateofbirth, $licence, $club, $countynm, $mf, $me, $ms, $wf, $we, $ws, $party, $disclaimer);
$STH = $dbh->prepare("INSERT INTO competitor (fname, sname, email, phone, dob, licence, club, country, mf, me, ms, wf, we, ws, party, disclaimer) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$STH->execute($data);
マイSQL:
私はそれを理解していません。チェックボックスをデバッグするとNULLが返されますが、必須フィールドが入力されていないときに生成される自動エラーをトリガーする必要がありましたか? この設定でチェックボックスを完全に間違って処理していますか? 他のオプションのチェックボックスについては、この種のエラーが発生しないように、それらがチェックされていない場合 (たとえば「0」) に整数を割り当てています。これについても同じことを行う必要がありますが、設定されている場合はおそらく「1」を割り当てます...? :/