PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment ignorer le point d'interrogation comme espace réservé lors de l'utilisation de PDO avec PostgreSQL

C'est une solution de contournement à mon problème. Il résout le problème en utilisant la fonction PostgreSQL pour remplacer le ? opérateur.

Je ne l'aime pas vraiment car cela ne rend pas PDO plus conforme à PostgreSQL. Mais je n'ai trouvé aucune vraie solution.

CREATE FUNCTION json_key_exists(JSONB,TEXT) RETURNS BOOLEAN LANGUAGE SQL STABLE AS $f$
    SELECT $1 ? $2
$f$;

Et maintenant je peux utiliser la requête :

SELECT * FROM post WHERE json_key_exists(locations, :location);

La solution de contournement a été suggérée par le fabuleux RhodiumToad de freenode #postgresql

Modifier

Comme @Abelisto l'a suggéré, il n'est pas nécessaire de créer la fonction ci-dessus en tant que jsonb_exists(jsonb, text) est disponible