有没有更好的方法来处理布尔输入postgresPHP 中的 PDO 驱动程序?
在 PHP PDO 中转换布尔值false到“”和true到“1”。这会导致某些语句中出现如下错误:
00000 - 7 - ERROR: invalid input syntax for type boolean: ""
我将变量作为输入数组传递给 PDOStatement::execute。
现在我正在使用此解决方法来传递适当的字符串
':somevar' => ($this->somevar === true ? 'true' : 'false')
有没有更好的办法?
我知道具有显式 data_type 的 PDOStatement::bindParam 。我想知道将 params 数组中的布尔值传递给 PDOStatement::execute() 的选项。
更新:添加了确切的代码
$qparams = array(
':id' => $this->id,
':somevar' => ($this->somevar === true ? 'true' : 'false'),
':updated_on' => $timestamp
);
$sql = 'UPDATE ' . SONG_ARTISTS . ' SET ' .
'id = :id, ' .
'somevar = :somevar, ' .
'updated_on = :updated_on ' .
' WHERE ' .
' id = :id';
$stmt = $pdo_handle->prepare($sql);
$result = $stmt->execute($params);
默认情况下,PDO 将所有数据视为字符串。 Bool false 转换为 string 是空字符串。 Postgres 不会将空字符串视为布尔值 false。
所以不,没有其他办法。您可以将参数绑定为 PDO_PARAM_BOOL 或像现在一样手动预转换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)