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の値を挿入しません'。このステートメント全体を1つの文字列として受け取るため、ステートメントは失敗します。

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 に答える