ホームページ  >  記事  >  バックエンド開発  >  MySQL ストアド プロシージャは正常に実行されましたが、PHP は値を取得できません。

MySQL ストアド プロシージャは正常に実行されましたが、PHP は値を取得できません。

WBOY
WBOYオリジナル
2016-06-13 12:11:13895ブラウズ

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関数


で実行してみることができます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。