2016-05-05 156 views
0

所以我試圖在表中插入4個值。我從POST獲得3個值,另一個我想從另一個表中獲得。這是我如何考慮實施它,但它似乎並沒有工作。有什麼建議麼?SQL INSERT INTO表(a,b,c)VALUES(:a,:b,:c,SELECT ...)

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

'$查詢=「INSERT INTO主題(主題,數據,UID,角色)SELECT:user,:pass :,:uid,role FROM users WHERE uid =:uid)「;' –

回答

1

在SQL中,所有子查詢都需要用它們自己的括號包圍。所以,你可以通過解決您的查詢:

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

就個人而言,我更喜歡INSERT . . . SELECT版本的SELECT

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

對我而言,這是一個愚蠢的錯誤。謝謝! 從現在起我將使用第二個版本。 –

相關問題