我的 PgSQL 适配器有问题。我正在使用本机驱动程序,方法 pg_fetch_* 仅返回字符串,即使列类型是整数或布尔值。
对于整数,这不是一个大问题,它只是一个简单的转换。
真正的问题在于布尔值,因为它返回字符串 't' 表示 TRUE,返回字符串 'f' 表示 FALSE。
好的,简单的解决方案是每次我有布尔字段时都对此进行验证,但这不是最聪明的......
一个特定的情况是,我想迁移一个在 MySQL 上运行的大型应用程序做 PgSQL,并且将有很多我必须更改的条件。
我试图在谷歌上找到一些东西,但是(我不知道我是否使用了错误的关键字组合)没有成功。
示例代码:
$db = pg_connect("host=localhost dbname=**** user=**** password=**** port=5432") or die("Could not connect");
pg_set_error_verbosity(PGSQL_ERRORS_VERBOSE);
$sql = 'SELECT * FROM mesa';
$result = pg_query($db, $sql);
var_dump(pg_last_error($db));
$data = array();
while($row = pg_fetch_assoc($result)) {
$data[] = $row;
}
var_dump($data);
输出:
array (size=10)
0 =>
array (size=3)
'numero' => string '2' (length=1)
'max_pessoas' => string '8' (length=1)
'status' => string 't' (length=1)
1 =>
array (size=3)
'numero' => string '3' (length=1)
'max_pessoas' => string '8' (length=1)
'status' => string 't' (length=1)
继续前进,但 'numero' 是一个整数,'status' 是一个布尔值。