0

我在我的数据库中存储了过程,我需要查找一个表并交叉引用一个 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

任何帮助将非常感激!

4

1 回答 1

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;

您可以在手册中阅读有关它的更多信息。

更新:现在我明白了,你想做什么。像这样简单地做:

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());
于 2012-06-14T08:48:58.637 回答