2017-04-22 9 views
0

に動作していない。これは動作します:私の最初のストアドプロシージャが

MySQLの>を選択しuser_idは、meta_key = 1_umからmeta_value 'が1_caps';

私が欲しいのです:1_umに

挿入(user_idは、meta_key、meta_value)の値(USER_ID = $ uidを、meta_key = '2_caps'、meta_value = $ mval)。

しかし、私はSPでの試行の影響を受けている行がゼロになっています。ここで私が持っているものです。

区切り//

手続きimport_um()を作成

が動い

declare done int default FALSE; 
declare $uid bigint(20) unsigned default 0; 
declare $mval longtext default ""; 
declare curs cursor for select user_id, meta_value from 1_um where meta_key='1_caps'; 
declare continue handler for not found set done = TRUE; 
open curs; 
read_loop: LOOP 
    fetch curs into $uid,$mval; 
    insert into 1_um (user_id, meta_key, meta_value) values (user_id=$uid, meta_key='2_caps', meta_value=$mval); 
if done then leave read_loop; 
end if; end LOOP; close curs; END// 

をBEGIN "行われていれば、その後read_loop残し;場合END;" fetchステートメントの真下(insertステートメントの上)にも効果はありません。

私が選択CONCAT(「私のvarがある」、$のUID)とinsert文を交換しようとして、VAR2は、動作していない変数にフェッチことが表示されます。 STDOUTには何も得ません。 UMID(オートINC)、USER_ID、meta_key、meta_value:

テーブル1_umは、4つの列を含んでいます。カーソルのすべてを選択する必要がありますか?

答えて

1

なぜコード内にループを使用していますか?ただ、insert . . . selectを使用します。

insert into 1_um (user_id, meta_key, meta_value) 
    select user_id, '2_caps', meta_value 
    from 1_um 
    where meta_key = '1_caps'; 

間違いなく、あなたの問題のビット部分はmisformed VALUES句(あなたが正しいいないような値のためのブール式を持っている)です。 VALUESも正しく使用する方法を学ぶ必要があります。しかし、この問題では、正しいSQL構文を使用してください。

+0

これは、おかげで、ありがとう!私は学ぶべきことがたくさんあることを知っています...私は人々が私の質問を下降させないことを望みます:/私はどのように私が研究努力を実証しなかったか、 –

関連する問題