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

postgres更新查询在设置为true而非false时更新布尔列

管景天
2023-03-14

我有一个疑问:

pg_prepare($conn, 'set_ui_advanced', 'update system.boxes set ui_advanced=$1 where id=$2');

$update_cmd_exec = pg_execute($conn, 'set_ui_advanced', array($ui_advanced, $system));

该列是布尔类型。

每当我从前端获取变量时,如下所示:

$ui_advanced = boolval(trim($_POST['ui_advanced']));

我传递0和1,然后返回变量,分别得到false和true。所以,我已经验证了我的变量是否正确。但是,当传递到查询时,我的列仅在变量设置为1而不是0时更新,即使我仍然得到true和false。

我通过以下方法解决了这个问题:

intval($variable) 

相反,让博士后来处理这个问题,但为什么真假不起作用呢?

我在这里查看是为了验证postgres允许true和false,这就是php表示true和false的方式。

共有1个答案

晏华奥
2023-03-14

我运行了以下简单脚本:

$var = boolval('1');
echo("True: ");
echo($var);
echo(" False: ");               
$var = boolval(0);
echo($var);

由此得出的结果是:

True: 1 False:

然后我查了一下为什么printing False没有打印任何东西,我被带到了这个问题:

为什么PHP不打印TRUE/FALSE?

为了总结这个问题的答案,字符串的Php文档说,当打印true和false时,上面的结果是预期的,如下所示:

布尔值TRUE转换为字符串"1"。布尔值FALSE被转换为""(空字符串)。这允许在布尔值和字符串值之间来回转换。

 类似资料:
  • 首先,如果我搞砸了,很抱歉,这是我在这里的第一个问题。第二,对不起,我的代码很乱,我刚开始在学校学习java。 所以,我编写了一个计时器,从00:00:00上升到23:59:59。秒、分钟和小时使用内部和外部循环上升,然后每秒钟在控制台中打印一次。我有一个布尔值来检查值是否小于10。如果数字小于10,它会在数字前加上0,这样它就被打印为01:02:03而不是1:2:3。问题是,一旦值等于或大于10

  • OTA更新查询与下载 获取access_token 终端设备 终端设备直接接入OTA服务器应当使用Client Credentials模式,client_id为设备id,client_serect为设备令牌. App接入 如果终端设备无法直接接入OTA服务器,而通过App中转,那么App应当也使用Client Credentials模式,client_id为app_id,client_secret

  • 我确信我在MongoDB查询中遗漏了一些非常基本的东西,似乎无法得到这个简单的条件。 考虑这个集合 我只想查询所有“未删除”的项目 我知道如何查找“已删除”标志设置为true的项目: 但是如何查找所有未被(例如,否定上述查询,或者换句话说,任何没有字段的项目,或者具有值 我通过猜测尝试了什么(请不要笑...) (不返回任何结果) 错误:{“$err”:“无效运算符:$eq”,“代码”:10068}

  • 以下示例将演示如何使用Update查询,在DBUtils的帮助下更新记录。 我们将更新表中的记录。 语法 其中, updateQuery − 更新包含占位符的查询。 queryRunner − QueryRunner对象更新数据库中的员工对象。 为了理解上述与DBUtils相关的概念,我们编写一个将运行更新查询的示例。创建一个示例应用程序。 更新在DBUtils入门应用中创建的文件。 编译并运行应

  • 问题内容: 我有一个包含三列的表: 还有另一个表,其中包含2列。的列与的相同。 我需要一个查询,它将更新带有的列。 我可以通过检查ID并执行更新语句来通过循环来实现。如何才能通过查询完成? 问题答案: 怎么样

  • 问题内容: 我有以下查询,仅在它们为空时才在其中更新值。 是否可以将所有这些都放入单个查询中? 和 问题答案: 您可以尝试: 尽管它可能会触发更新触发器,即使对于实际上未更改的行也是如此。