当前位置: 首页 > 知识库问答 >
问题:

为什么pg_query_参数将布尔值作为字符串读取?

傅朗
2023-03-14

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

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

$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总是将布尔值读取为解释为原始值相反的文本?

共有1个答案

公良向阳
2023-03-14

让我们面对现实:

  • PDO或pgsql库返回的数据总是字符串。
  • 布尔值的Postgreql表示是字符串t和f。

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

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

 类似资料:
  • 问题内容: 我有一个布尔变量,我想将其转换为字符串: 我需要转换后的值的格式为:,而不是 我试过了: 但是它告诉我,并且不是公认的功能。 如何将此布尔值转换为PHP 或PHP 格式的字符串? 问题答案: 最简单的解决方案:

  • 我有一个值,它将是四件事之一:布尔true、布尔false、字符串“true”或字符串“false”。如果字符串是字符串,我想将字符串转换为布尔值,否则不修改它。换句话说: “true”应该变为true “false”应变为false 真实应该保持真实 false应保持为false

  • 问题内容: 在C ++中,为什么布尔需要一个字节来存储true或false,而只需要一位就足够了,例如0代表false,1代表true?(为什么Java也需要一个字节?) 其次,使用以下方法更安全? 第三,即使是安全的,上述现场技术真的有帮助吗?既然我听说我们在那里节省了空间,但是编译器生成的访问它们的代码仍然比生成访问基元的代码更大,更慢。 问题答案: 为什么布尔只需要一个字节就可以存储真或假,

  • 问题内容: Oracle Java Community网站上的一篇文章提供了以下方法作为示例(对于JPA Converter,但这并不相关): 将String y强制转换为String val有什么用?有正当的理由吗? 原始文章:JPA的新增功能 问题答案: 这样的转换是完全没有必要的。我可以想象那是以前 但是后来参数类型更改为,而作者只是忘了删除强制类型转换。

  • 我有下面的代码 如果将两个布尔值与字符串组合,为什么会出现编译错误 编辑:编译错误是参数类型布尔值为null的运算符==未定义

  • 问题内容: 我可以将表示布尔值(例如,“ true”,“ false”)的字符串转换为JavaScript中的固有类型吗? 我有一个隐藏的HTML表单,可根据用户在列表中的选择进行更新。此表单包含一些表示布尔值的字段,并使用内部布尔值动态填充。但是,一旦将此值放入隐藏的输入字段中,它将成为一个字符串。 确定字段的布尔值(将其转换为字符串后)的唯一方法是依赖于其字符串表示形式的文字值。 有没有更好的