Когда мы получаем с клиента булевское значение для использования в запросе PostgreSQL, нельзя обойтись просто фильтрацией, ибо filter_var($_REQUEST['имя'], FILTER_VALIDATE_BOOLEAN) так нам и вернёт bool(true) или bool(false), что при преобразовании к строке даст string("0") или string("1"), а для PostgreSQL это будет INTEGER, и он будет просто в
(
Read more... )
Comments 3
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
array('false', 'true')[filter_var($_REQUEST['имя'], FILTER_VALIDATE_BOOLEAN)]
Reply
Конвертнёт в false невалидное значение (впрочем, как и мой исходный вариант - нужен ещё флаг FILTER_NULL_ON_FAILURE), а второе ещё и контринтуитивно.
Reply
Leave a comment