The SELECT
fehlt die FROM
Klausel, wenn Klausel verwendet wird, ein WHERE
erforderlich ist.
das ist das Problem.
Es gibt ein paar Möglichkeiten, es zu beheben.
Für eine schnelle Lösung, können Sie FROM DUAL
vor dem WHERE
hinzufügen.
Wenn Sie nicht möchten, dass Ihre MySQL-Abfragen wie Oracle-Abfragen aussehen, können Sie eine Inline-Ansicht als Zeilenquelle verwenden.
Anstelle von FROM DUAL
könnten Sie FROM (SELECT 1) i
verwenden.
Das ist die weniger-Oracle-mehr-MySQL-ähnliche Art und Weise es zu fixieren. So würde ich es machen.
Sie könnten auch jede Tabelle oder Sicht verweisen, die Sie gibt genau eine Zeile garantiert werden. (Es kann nicht null Zeilen sein, und es kann nicht zwei Reihen sein
Ein paar andere Hinweise:.
In MySQL, Bezeichner (zB Spaltennamen) können mit Graviszeichen Zeichen maskiert werden , aber nicht einfache Anführungszeichen. Identifiers müssen nur entkommen, wenn sie Zeichen enthalten, die (in unescaped Identifier) nicht erlaubt sind, oder wenn die Kennung Konflikte mit einem reservierten Wort.
INSERT INTO photolikes(`User`, `Photo`)
^^^ ^
auch erscheint der Code zu sein anfällig für SQL-Injection.Potentiell unsichere Werte, die incorp sind Oder in den Text einer SQL-Anweisung eingegeben werden, sollte ordnungsgemäß maskiert werden. Ein noch besseres Muster besteht darin, vorbereitete Anweisungen mit Bind-Platzhaltern zu verwenden.
was meinst du 'doenst work'? gibst du einen Fehler? Sollte etwas tun und etwas anderes tun oder gar nichts tun? –
@JuanCarlosOropeza Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in die Bedienungsanleitung zu Ihrer MySQL-Server-Version für die richtige Syntax entspricht in der Nähe von '' User‘zu verwenden, 'Photo') SELECT ...... – Den
' INSERT INTO photolikes ('User', 'Photo') '.. ... Backticks um Spaltennamen, nicht Anführungszeichen; und kein 'FROM tabellenname' in Ihrem ersten' SELECT' –