MySQL ストアド プロシージャは正常に実行されましたが、PHP は kyydemploy where id=empid から @tmp;
select substring(REPLACE(empfixed,'.', ) から値を取得できません。 ',' ) ,2,char_length(empfixed) -2) into @tmp from kyydemploy where id=empid ;
end if;
set @sel='select sum(dejifen) into @tmpjf from kyydeinter where id in (';
set @selt= ')';
set @conds=concat(@sel,@tmp,@selt);
@conds から stmt を準備します;
実行stmt;
deallocate prepare stmt;
select @ tmpjf into bb;
end
ここで、bb は戻り値のワード値 int 型です。
cmd と navicat を使用して実行できます。ただし、php では値を取得できません。また、単純なストアド プロシージャ select 888 into bb も使用しましたが、これは php で取得できます。何が問題なのか教えていただけますか?
------ソリューションのアイデア----------------------
ストアド プロシージャは 2 つの結果セットを返します(条件 empid>0 が true の場合、結果セットは 3 つあります)
しかし、mysql 関数グループには結果セット ポインターを移動する関数がないため、select @tmpjf into bb; の結果を読み取ることができません。最後の結果セットにあります)
操作するには、mysqli 関数グループまたは PDO クラスを使用する必要がありますこれが、php 5.5 が mysql 関数グループを放棄した理由の 1 つです
- -----解決案----- --------------------
データベース操作拡張子を変更せず(変更するとプログラムが変わる)小さくはありません)クエリmysql_next_result関数
で実行してみることができます