2014-10-20 45 views
0

我試圖從一個表複製到另一個表,它工作正常,但我也需要插入當前用戶ID在新表中。我還沒有想出如何。通常我會做類似SET user_id = :user_id,但我從來沒有使用過這個。從一個MySQL表複製到另一個問題

這是我的代碼:

$q = $conn->prepare("INSERT INTO user_themes(title,code_entry,code_home,code_css,code_category,code_archive) 
    SELECT title, code_entry, code_home, code_css, code_category, code_archive FROM blogy_themes WHERE id = :id"); 

所以我的問題是: 我如何可以插入user_id(假設user_id是1)到新表中呢?

+0

添加一列並插入它 - 你沒有試過嗎? – 2014-10-20 18:36:00

+0

@JayBlanchard我已經在數據庫中添加了列(user_id),但無法弄清楚如何在查詢中實現它。 – kanarifugl 2014-10-20 18:38:05

+0

只需添加新列user_id並將其插入即可。請注意,不要將自動增量設置爲該字段。 – 2014-10-20 18:41:17

回答

1

查詢的基礎不會改變。只需將值添加到兩列和`SELECT語句:

INSERT INTO user_themes(user_id, title,code_entry,code_home,code_css,code_category,code_archive) 
    SELECT :user_id, title, code_entry, code_home, code_css, code_category, code_archive 
    FROM blogy_themes WHERE id = :id 

然後,當你執行,既綁定和:id:user_id

0

從我知道你想有一個正在做的動作在所有的新記錄用戶的ID,你可以這樣做:

$q = $conn->prepare("INSERT INTO user_themes(user_id,title,code_entry,code_home,code_css,code_category,code_archive) 
SELECT '" . (int) $userid ."' as user_id, title, code_entry, code_home, code_css, code_category, code_archive FROM blogy_themes WHERE id = :id"); 

這是一種變通方法,以保持按原樣使用查詢。 第二種選擇是更多的「ORM」方法,您可以查詢user_themes表中的所有相關記錄,迭代結果集,克隆每一行並將其保存爲新的user_id。

+1

是的。它的工作,但不得不刪除「as」,並用逗號代替它。 – kanarifugl 2014-10-20 18:56:09

+0

['如果它工作...'](http://meta.stackexchange.com/a/5235/)@kanarifugl – 2014-10-20 19:20:23

+0

你爲什麼拿一些佔位符,然後去破壞它? – tadman 2014-10-20 19:31:20

相關問題