发布
社区首页 >问答首页 >为什么pg_query_params会以字符串的形式读取布尔值?

为什么pg_query_params会以字符串的形式读取布尔值?
EN

Stack Overflow用户
提问于 2015-10-26 14:26:03
回答 1查看 1.7K关注 0票数 2

我在PostgreSQL表中有一个布尔列。在pgAdmin III中,表视图显示列的“TRUE”和“FALSE”。当我执行SQL 'select *‘时,另一个窗口显示't’和'f‘。这是一些配置问题吗?它不也应该显示“真”和“假”吗?

然后我们来看PHP。我有下面的代码来处理这个布尔值(实际上我正在做一些不同的事情,但在这里简化了它):

代码语言:javascript
代码运行次数:0
复制
$q = "select * from tax where id = $1";
$res = pg_query_params($conn,$q,[$id]);
if ($res) {
    $row = pg_fetch_array($res,NULL,PGSQL_ASSOC);
    $valido = $row['valido'];
    echo $valido; // prints 'f' (== 'FALSE' on database)
    if ($valido) {
        echo 'valid'; // gets here
    } else {
        echo 'invalid';
    }
}

数据库中写着'FALSE',php读取'f‘并将其视为'TRUE’。这是一些错误的配置,还是php总是将布尔值读取为与原始值相反的文本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-27 08:10:18

让我们面对现实:

  • PDO或pgsql库返回的数据总是字符串。
  • 布尔的Postgresql表示是字符串't‘和'f’。

这是PHP文档在不同获取函数的“返回值”中指定的。这里这里.

如果希望将这些结果转换为PHP等效类型,则必须设置变流器系统

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33348180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档