我在我的数据库中存储过程,我需要查找一个表并交叉引用一个id,然后使用返回的行我需要将信息插入到另一个表中,但我似乎无法使用查询中的信息插入。这就是我的......
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
任何帮助都会非常感激!
答案 0 :(得分: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。
更新:现在我明白了,你想做什么。这样做是这样的:
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());