Bonjour,
J'utilise PHP 7.2 et PostGreSQL 10.1. J'ai déjà lu qu'il y a quelques galères de gestion des booleans avec postGre.
J'en ai un que je n'arrive pas à résoudre : il n'y a pas de problème a insérer/updater une colonne avec une valeur true mais ça plante si j'ai false.
Un exemple simple : passer un user de l'état d'admin à non admin :
La requête est paramétrée avec le SQL
update user set admin=$1 where "userId" = $2
et le tableau de valeurs
array(2) { [0]=> bool(false) [1]=> string(1) "9" }
Ca me fait cette erreur
Warning: pg_query_params(): Query failed: ERREUR: syntaxe en entrée invalide pour le type boolean : « » in ...
J'ai tenté de le faire en passant mes paramètres par pg_convert() avant.
Le tableau de paramètres qui me revient est
array(2) { [0]=> string(3) "'f'" [1]=> string(1) "9" }
Et l'erreur qui est générée est
Warning: pg_query_params(): Query failed: ERREUR: syntaxe en entrée invalide pour le type boolean : « 'f' » in ...
Donc soit je laisse pg_query_params() gérer lui-même la sécurisation des données (est-ce suffisant ?) et il me transforme un false en ' ' (double espace). Soit je sécurise les données par le mécanisme proposé pg_convert() et là le false se transforme en 'f' (avec simple quote) qui visiblement n'est pas le f attendu.
Je précise que si la valeur du booléen est true il n'y a pas de soucis.
Une petite idée pour me tirer de là ?
Partager