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 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.
Wie von @Abelisto vorgeschlagen, muss die obige Funktion nicht erstellt werden, da jsonb_exists(jsonb, text)
avialabe
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%Tags und Links php postgresql pdo