2012-06-14 35 views
0

我在我的數據庫中存儲過程,我需要查找一個表並交叉引用一個id,然後使用返回的行我需要將信息插入到另一個表中,但我似乎無法使用從查找到插入的信息。這就是我..在MySQL存儲過程中使用選擇

BEGIN 
#Routine body goes here... 
SET @UID = uid; 
SET @UIDTOFB = uid_to; 

SET @SQLTEST = CONCAT('SELECT users.user_auto_id FROM users WHERE users.user_fb_uid=  @UIDTOFB LIMIT 1'); 
PREPARE sqlcmd from @SQLTEST; 
EXECUTE sqlcmd; 

INSERT INTO challenges(challenge_from_uid, challenge_to_uid, challenge_dateadded) VALUES(@UID, @SQLTEST.users.user_auto_id, now()); 

SET @LASTID = LAST_INSERT_ID(); 
SELECT @LASTID as id; 

END 

任何幫助,將不勝感激!

回答

1

這不會插入@UIDTOFB的值,因爲您錯過了一些'。它將整個語句作爲一個字符串,因此語句失敗。

SET @SQLTEST = CONCAT('SELECT users.user_auto_id FROM users WHERE users.user_fb_uid=  @UIDTOFB LIMIT 1'); 
PREPARE sqlcmd from @SQLTEST; 
EXECUTE sqlcmd; 

無論如何,我會建議你使用的參數是這樣的:

PREPARE sqlcmd from 'SELECT users.user_auto_id FROM users WHERE users.user_fb_uid= ? LIMIT 1'; 
EXECUTE sqlcmd USING @UIDTOFB; 

你可以閱讀更多關於它here in the manual

UPDATE:現在我明白了,你想要做什麼。這樣做是這樣的:

SELECT @anyVariable:=users.user_auto_id FROM users WHERE users.user_fb_uid= @UIDTOFB LIMIT 1; 
INSERT INTO challenges(challenge_from_uid, challenge_to_uid, challenge_dateadded) VALUES(@UID, @anyVariable, now()); 
+0

我將如何使用在同一過程中返回的users.user_auto_id? – rorypicko

+0

@RoryPickering更新了我的答案。 – fancyPants

+0

謝謝tombom!非常感謝,救了我幾個小時的頭痛;)哈哈 – rorypicko