PHP PDO插入NULL而不是空的potgresql

Alp*_*aus 7 php postgresql null pdo bindparam

我正在使用带有Postgresql后端的PHP PDO.我有一个表有一些可以为空的字段,当用户在HTML表单字段中没有输入任何内容时,我想在该字段中插入NULL,而不是空字符串(这很重要,因为这些表中的一些SELECT稍后会使用条件等as WHERE x IS NOT NULL).

但是,此版本的bindParam代码会将空字符串插入可为空的字段而不是NULL.

$stmt2->bindParam(':title', $title, PDO::PARAM_STR);
Run Code Online (Sandbox Code Playgroud)

我已经阅读了很多,并且发现这是将null插入字段的答案:

$stmt2->bindParam(':title', $title, PDO::PARAM_NULL);
Run Code Online (Sandbox Code Playgroud)

但这意味着我需要预先检查所有传递给可空字段的参数,以确定它们是否为空,如果是,则传递PDO :: PARAM_NULL而不是PDO_PARAM_STR.我当然可以这样做,但希望可能有一个设置只会告诉PDO它是否遇到空字符串,而是插入null.

我偶然发现了这个

$this->dbh->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING);
Run Code Online (Sandbox Code Playgroud)

但它没有任何效果,经过进一步的研究,我认为这只影响出路的记录,而不是在路上.

除了预先检查变量之外的任何选项?

谢谢亚伦

xda*_*azz 8

如果你想要null,只需插入null而不是空字符串.

$stmt2->bindParam(':title', $title === '' ? null : $title, PDO::PARAM_STR);
Run Code Online (Sandbox Code Playgroud)