У меня есть таблица, в которой есть поля, допускающие значение NULL, и когда пользователь ничего не вводит в поле HTML-формы, я хочу вставить в это поле NULL, а не пустую строку (это важно поскольку некоторые из моих SELECT в этих таблицах позже используют такие условия, как WHERE x IS NOT NULL).
Однако эта версия кода bindParam вставляет пустую строку в поле, допускающее значение NULL, вместо NULL.
$stmt2->bindParam(':title', $title, PDO::PARAM_STR);
Я читал совсем немного и выяснил, что это ответ на вставку нуля в поле вместо этого:
$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);
Но это не имеет никакого эффекта, и при дальнейших исследованиях я думаю, что это влияет только на запись на выходе, а не на входе.
Любые варианты, кроме предварительной проверки переменных ?