2016-05-05 8 views
0

Also versuche ich 4 Werte in eine Tabelle einzufügen. Ich bekomme 3 Werte von POST und die andere möchte ich von einem anderen Tisch bekommen. So habe ich darüber nachgedacht, es zu implementieren, aber es scheint nicht zu funktionieren. Irgendwelche Vorschläge?SQL INSERT INTO (a, b, c) WERTE (: a,: b,: c, SELECT ...)

$query = "INSERT INTO topics (subject, data, uid, role) VALUES (:user, :pass, :uid, SELECT role FROM users WHERE uid=:uid) "; 
+0

'$ query =„INTO Themen INSERT (Betreff, Daten, uid, Rolle) SELECT: Benutzer,: pass :,: uid, Rolle von Benutzern WHERE uid =: uid) "; –

Antwort

1

In SQL müssen alle Unterabfragen von eigenen Klammern umgeben sein. So können Sie Ihre Anfrage beheben, indem Sie:

INSERT INTO topics (subject, data, uid, role) 
    VALUES (:user, :pass, :uid, (SELECT role FROM users WHERE uid = :uid)); 

Ich persönlich viel lieber die INSERT . . . SELECT Version von SELECT:

INSERT INTO topics (subject, data, uid, role) 
    SELECT :user, :pass, :uid, u.role 
    FROM users u 
    WHERE uid = :uid; 
+0

Ah dummer Fehler an meinem Ende. Vielen Dank! Ich werde ab jetzt die zweite Version verwenden. –

Verwandte Themen