Передача булевского значения через PHP в PostgreSQL

Mar 09, 2013 15:32


Когда мы получаем с клиента булевское значение для использования в запросе PostgreSQL, нельзя обойтись просто фильтрацией, ибо filter_var($_REQUEST['имя'], FILTER_VALIDATE_BOOLEAN) так нам и вернёт bool(true) или bool(false), что при преобразовании к строке даст string("0") или string("1"), а для PostgreSQL это будет INTEGER, и он будет просто в ( Read more... )

php, Web-программирование, postgresql

Leave a comment

Comments 3

morruth March 9 2013, 11:50:53 UTC
А перловский DBD::Pg сам с этим разбирается
Datatype bool
The current implementation of PostgreSQL returns 't' for true and 'f' for false. From the Perl point of view, this is a rather unfortunate choice. DBD::Pg
therefore translates the result for the "BOOL" data type in a Perlish manner: 'f' becomes the number 0 and 't' becomes the number 1. This way the
application does not have to check the database-specific returned values for the data-type "BOOL" because Perl treats 0 as false and 1 as true. You may set
the pg_bool_tf attribute to a true value to change the values back to 't' and 'f' if you wish.

Boolean values can be passed to PostgreSQL as TRUE, 't', 'true', 'y', 'yes' or '1' for true and FALSE, 'f', 'false', 'n', 'no' or '0' for false.

Reply


gegmopo4 March 9 2013, 15:06:37 UTC
filter_var($_REQUEST['имя'], FILTER_VALIDATE_BOOLEAN) ? 'true' : 'false'
array('false', 'true')[filter_var($_REQUEST['имя'], FILTER_VALIDATE_BOOLEAN)]

Reply

torbasow March 24 2013, 13:36:36 UTC

Конвертнёт в false невалидное значение (впрочем, как и мой исходный вариант - нужен ещё флаг FILTER_NULL_ON_FAILURE), а второе ещё и контринтуитивно.

Reply


Leave a comment

Up