sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man ignorerar frågetecken som platshållare när man använder PDO med PostgreSQL

Detta är en lösning på mitt problem. Det löser problemet genom att använda PostgreSQL-funktionen för att ersätta ? operatör.

Jag gillar det inte riktigt eftersom det inte gör PDO mer överensstämmelse med PostgreSQL. Men jag hittade ingen riktig lösning.

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

Och nu kan jag använda frågan:

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

Lösningen föreslogs av den fantastiska RhodiumToad från freenode #postgresql

Redigera

Som @Abelisto föreslog finns det inget behov av att skapa funktionen ovan som jsonb_exists(jsonb, text) är avialabe



  1. mySQL-fråga mellan två datum och två gånger

  2. PyMySQL kan inte ansluta till MySQL på localhost

  3. PDO förberedde satsen fetch() som returnerar dubbla resultat

  4. MySQL-fel 10061