Вставить NULL вместо пустой строки с PDO

У меня есть таблица, в которой есть поля, допускающие значение 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);

Но это не имеет никакого эффекта, и при дальнейших исследованиях я думаю, что это влияет только на запись на выходе, а не на входе.

Любые варианты, кроме предварительной проверки переменных ?

7
задан Dharman 10 August 2019 в 16:55
поделиться