PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come ignorare il punto interrogativo come segnaposto quando si utilizza PDO con PostgreSQL

Questa è una soluzione al mio problema. Risolve il problema utilizzando la funzione PostgreSQL per sostituire il ? operatore.

Non mi piace molto perché non rende PDO più conforme a PostgreSQL. Ma non ho trovato una vera soluzione.

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

E ora posso usare la query:

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

La soluzione alternativa è stata suggerita dal favoloso RhodiumToad di freenode #postgresql

Modifica

Come suggerito da @Abelisto, non è necessario creare la funzione sopra come jsonb_exists(jsonb, text) è disponibile