我有这个问题:
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处理它,但为什么不能做真假工作呢?
我看了HERE来验证postgres是否允许true和false,这就是php表示true,false的方式。
答案 0 :(得分:0)
我运行了这个简单的脚本:
$var = boolval('1');
echo("True: ");
echo($var);
echo(" False: ");
$var = boolval(0);
echo($var);
由此产生的结果是:
True: 1 False:
然后我查了解为什么打印False没有打印任何东西而且我引出了这个问题:
Why doesn't PHP print TRUE/FALSE?
总结这个问题的答案,Php Documentation字符串表示当打印true和false时,上面的结果是预期的,并表示为:
布尔值TRUE值转换为字符串" 1"。布尔值FALSE转换为"" (空字符串)。这允许在布尔值和字符串值之间来回转换。