【发布时间】:2015-11-07 19:45:01
【问题描述】:
有没有更好的方法来处理 PHP 中 postgres 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。我想知道将参数数组中的布尔值传递给 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);
【问题讨论】:
-
请显示您用于准备和绑定参数的确切代码。
-
@deceze 我已经为问题添加了更多代码。
-
您是否尝试过禁用 EMULATE_PREPARES?
-
是的,尝试过 EMULATE_PREPARES。不工作。
标签: php postgresql pdo