Syntaxfehler am Ende der Eingabe

Hallo zusammen,

beim folgenden Problem weiß ich nicht mehr weiter.
In PHP erzeuge ich folgende Query, die aus einzelnen Elementen zu einem String zusammengebaut wird.

WITH ins AS ( 
INSERT INTO t_wetterdaten_synoptic (td,ttt,rad1,fx1,dd,ff,rr1,pppp,rhum,iaco,datum,synctime,filetime) 
VALUES (-4.2,-0.7,0,10.3,51,5.3,0,1021.2,77,'ZZZZZ','27.01.23 23:00:00UTC',unix_timestamp(),'27.01.2023 23:43:00UTC') 
RETURNING id,iaco,datum 
) 
INSERT INTO t_wetterdaten_synoptic_zeit_id (iaco,data_id,datum) 
SELECT ins.iaco,ins.id,ins.datum FROM ins;

Sobald die Query mit PDO::query ausgeführt wird, wird folgender Fehler generiert:

FEHLER:  Syntaxfehler am Ende der Eingabe
LINE 3: ....23 23:00:00UTC',unix_timestamp(),'27.01.2023 23:43:00UTC') 
                                                                       ^

Kopiere ich obige Query in das Eingabefeld vom Adminer und führe die sie aus, kommt keinerlei Fehlermeldung zurück und der Datensatz ist tatsächlich in den Tabellen.

Wo ist der Fehler, ich sehe ihn nicht.

Beste Grüße und danke im voraus für die Antworten.
Jürgen

es gibt keine Funktion unix_timestamp() in PostgreSQL.

Hallo akretschmer,

Ich zitiere mich selber:

Ich werde jetzt den String mit der Query anders zusammenbauen.

Beste Grüße
Jürgen

Dann macht Adminer was damit! Es gibt ein Plugin, das diese Funktion beinhaltet → Adminer plugin that replaces UNIX timestamps with human-readable dates. · GitHub

Ich habe das unix_timestamp() mal gegen “0” ersetzt:
WITH ins AS ( INSERT INTO t_wetterdaten_synoptic (td,ttt,rad1,fx1,dd,ff,rr1,pppp,rhum,iaco,datum,synctime,filetime) VALUES (-3.8,-0.7,8,11.9,44,6.9,0,1022.8,80,'ZZZZZ','28.01.23 08:00:00UTC',0,'28.01.2023 08:43:00UTC') RETURNING id,iaco,datum ) INSERT INTO t_wetterdaten_synoptic_zeit_id (iaco,data_id,datum) SELECT ins.iaco,ins.id,ins.datum FROM ins;

Die Fehlermeldung ist geblieben:

FEHLER:  Syntaxfehler am Ende der Eingabe
LINE 1: ...,'ZZZZZ','28.01.23 08:00:00UTC',0,'28.01.2023 08:43:00UTC') 
                                                                       ^

Wenn es PHP ist, dann prüfe mal deine Anführungszeichen. Mit “'” wird ja ein String eigeleitet… Eventuell kommt da etwas durcheinander.

Hallo Xandrian,
sie Anführungszeichen sind alle korrekt, sonst würde PHP eine Fehlermeldung werfen und die erzeugte Query würde auch nicht funktionieren.
Ich habe das Problem jetzt per Skript gelöst, was natürlich sehr langsam ist, aber es geht.
Wenn ich dann mal Zeit habe, werde ich die SQL-Lösung nochmals angehen.

Nachtrag: Wenn die Funktion “unix_timestamp()” unbekannt wäre, käme eine andere Fehlermeldung als die, die ich gepostet habe. Diese Funktion habe ich selber definiert.

Danke und einen schönen Nachmittag
Jürgen

Warum nimmst Du eigentlich nicht richtige timestamp Werte anstatt dieser unsäglichen Unix-Epoch Werte?

Du schließt also vom Funktionsnamen auf die darin verwendeten PG-Funktionen…

Da zum ursprünglichen Thema nichts mehr beigetragen wird, kann der Thread geschlossen werden.

Ich vermute trotzdem, dass es irgendwas in Zusammenhang mit PHP bzw. PDO zu tun hat. Begründet dadurch, dass der Fehler ja nur dort auftritt und in Adminer geht. Zeichen verschoben, Interpretationsfehler etc.

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.