2016-01-25 44 views
0

我已經閱讀過網站上的類似問題。但我仍然無法找出問題所在。我想將數據從表格「main」複製到表格「metro」並添加一列。但這個說法不會運行,也沒有錯誤提示。從選擇查詢結果插入數據並添加新列

$s_id=crypt($myid); 
$result = mysqli_query($link, "INSERT INTO users (username, password, s_id, email, dob) VALUES ('$myid', '$mypw', '$s_id', '$email', STR_TO_DATE('$dob', '%d/%m/%Y'));"); 
$result = mysqli_query($link, "SELECT user_id FROM users WHERE username='$myid'"); 
$row = mysqli_fetch_array($result,MYSQLI_BOTH); 
$user_id=$row["user_id"]; 
//below is the statment which can't be perform. 
$result = mysqli_query($link, "INSERT INTO metro (ID, Row, Column, Caption, link, Ico, Size, Color, user_id) SELECT ID, Row, Column, Caption, link, Ico, Size, Color, '$user_id' FROM main"); 

表「主」僅具有字段 (ID,Row,Column,Caption,link,Ico,Size,Color)
表「地鐵」僅具有上述場和場(USER_ID) 我試圖在phpMyAdmin 運行statment
INSERT INTO...
錯誤消息顯示「#1064 - 您的SQL語法有錯誤;請檢查與您的MySQL服務器版本對應的手冊,以便在
附近使用正確的語法 'Column, Caption, link, Ico, Size, Color, user_id) SELECT ID, Row, Column, Captio' at line 1"
不知字段名是還是Column是關鍵字。這兩個詞的顏色變成紅色。

+0

你會得到什麼錯誤? – sagi

+0

我只發現表「地鐵」不更新。該網頁沒有任何錯誤消息。有些帖子推薦使用bindParm函數。但我使用程序風格。我不明白如何編寫bindParm的過程風格。看起來bindParm很複雜。 狀態:表「用戶」可以更新。 $ row [「user_id]」可以被分配。但「地鐵」表沒有改變。 –

+0

請幫助upvote。非常感謝。 –

回答

1

至少在ANSI SQL rowcolumn被保留的話,那麼這些列名需要用雙引號分隔爲"Row""Column"

INSERT INTO metro (ID, "Row", "Column", Caption, link, Ico, Size, Color, user_id) 
SELECT ID, "Row", "Column", Caption, link, Ico, Size, Color, '$user_id' FROM main 

也許MySQL的要背蜱,而不是雙引號?

+0

我只是將字段名稱「Row」更改爲「myRow」和「Column」更改爲「myCol」。但它仍然不好。 然後,我嘗試在phpmyAdmin中運行SQL。錯誤消息顯示ID是唯一的(因爲表「metro」已經具有與主相同的數據)。現在我正在尋找取消「ID」的方法是唯一的。在那之後似乎可能會好起來。 –

+0

謝謝大家。在刪除ID作爲主鍵和索引後。 INSERT語句可以運行。 –

+0

@jarlh如果你有機會,我有一個插入查詢的問題:http://stackoverflow.com/questions/34989107/php-binding-dynamic-number-of-variables-for-batch-insert-query – user2363025