Null 可能なフィールドがいくつかあるテーブルがあり、ユーザーが HTML フォーム フィールドに何も入力しない場合、空の文字列ではなく NULL をそのフィールドに挿入したい (これらのテーブルの SELECT の一部が後で次のような条件を使用するため、これは重要です)。 WHERE x IS NOT NULL として)。
ただし、このバージョンの bindParam コードは、NULL の代わりに空の文字列を null 許容フィールドに挿入します。
$stmt2->bindParam(':title', $title, PDO::PARAM_STR);
私はかなり読んでいて、これが代わりにフィールドに null を挿入する答えであることがわかりました:
$stmt2->bindParam(':title', $title, PDO::PARAM_NULL);
ただし、これは、null 許容フィールドに渡されるすべてのパラメーターを事前にチェックして、それらが空であるかどうかを判断する必要があることを意味しPDO::PARAM_NULL
ますPDO::PARAM_STR
。私はもちろんこれを行うことができますが、PDO が空の文字列に遭遇した場合に代わりに null を挿入するように指示する設定があることを望んでいました。
私はこれに出くわしました
$this->dbh->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING);
しかし、それは効果がなく、さらなる調査により、これは途中ではなく、途中の記録にのみ影響すると考えています.
変数の事前チェック以外のオプションはありますか?