Man*_*noi 5 php postgresql pdo
有没有更好的方法来处理PHP中的postgres PDO驱动程序的布尔输入?
在PHP中,PDO将布尔值false转换为""并将true转换为"1".这会在某些语句中导致这样的错误:
00000 - 7 - ERROR: invalid input syntax for type boolean: ""
Run Code Online (Sandbox Code Playgroud)
我将我的变量传递给PDOStatement :: execute作为输入数组.
目前我正在使用此变通方法传递适当的字符串
':somevar' => ($this->somevar === true ? 'true' : 'false')
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我知道PDOStatement :: bindParam有明确的data_type.我想知道将params数组中的boolean传递给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);
Run Code Online (Sandbox Code Playgroud)
Iva*_*gin 11
默认情况下,PDO将所有数据视为字符串.bool false cast to string是空字符串.Postgres不会将空字符串作为布尔值false.
所以不,没有别的办法.您可以将参数绑定为PDO_PARAM_BOOL,也可以像现在一样手动预转换.
| 归档时间: |
|
| 查看次数: |
1413 次 |
| 最近记录: |