запрос на обновление postgres обновляет логический столбец, если установлено значение true, но не false

У меня есть этот запрос:

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 справиться с этим, но почему бы не использовать истинную и ложную работу?

Я посмотрел ВОТ чтобы убедиться, что postgres допускает истину и ложь, то есть как php представляет истину, ложь.

0

Решение

Я запустил этот простой скрипт:

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

Отсюда вывод:

True: 1 False:

Затем я посмотрел, почему печать False ничего не печатала, и меня привели к этому вопросу:

Почему PHP не печатает TRUE / FALSE?

Чтобы суммировать ответы на этот вопрос, Документация Php для строк говорит, что при печати true и false ожидаемые результаты ожидаются и записываются как:

Логическое значение TRUE преобразуется в строку «1». Логическое значение FALSE преобразуется в «» (пустая строка). Это позволяет преобразовывать между булевыми и строковыми значениями.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]