Wie Sie das Fragezeichen als Platzhalter ignorieren, wenn Sie PDO mit PostgreSQL verwenden

8

Hinweis:

Diese Frage kann als Duplikat dieses Frage . Es weist auf das gleiche Problem mit PDO hin. Die Problemumgehung ist jedoch ein wenig anders, da sich das Ziel unterscheidet. Ich werde dort die Problemumgehung für JSONB und die Verbindung zum PHP-Ticket veröffentlichen.

Wenn ich die folgende Abfrage vorbereite:

%Vor%

Die folgende Warnung tritt auf:

  

Warnung: PDO :: prepare (): SQLSTATE [HY093]: Ungültige Parameternummer: gemischte benannte und positionelle Parameter in /path/file.php in Zeile xx

Das Fragezeichen ist ein gültiger PostgreSQL-Operator , aber PDO hält es für einen Platzhalter .

Gibt es eine Möglichkeit, PDO so zu konfigurieren, dass das Fragezeichen als Platzhalter ignoriert wird?

Ich werde eine Workaround-Funktion veröffentlichen. Hoffe, es gibt einen besseren Weg

Bearbeiten Ich füge ein Ticket im PHP Bug Tracing System

hinzu     
michaelbn 23.03.2016, 08:46
quelle

2 Antworten

4

Dies ist eine Problemumgehung für mein Problem. Es löst das Problem, indem die PostgreSQL-Funktion den Operator ? ersetzt.

Ich mag es nicht wirklich, weil es PDO nicht mehr zu PostgreSQL macht. Aber ich habe keine wirkliche Lösung gefunden.

%Vor%

Und jetzt kann ich die Abfrage verwenden:

%Vor%

Der Workaround wurde von der fabelhaften RhodiumToad von Freenode #postgresql vorgeschlagen.

Bearbeiten

Wie von @Abelisto vorgeschlagen, muss die obige Funktion nicht erstellt werden, da jsonb_exists(jsonb, text) avialabe

ist     
michaelbn 23.03.2016 08:56
quelle
1

Ok, der einfachste Weg ist, den neuen Operator mit denselben Optionen zu erstellen , wie:

%Vor%

(Ursprüngliches Skript wurde von pgAdmin erzeugt)

Und benutze es wie üblich

%Vor%     
Abelisto 23.03.2016 23:31
quelle

Tags und Links