1

出力パラメータを持つストアド プロシージャを PHP 経由で呼び出すにはどうすればよいですか?

$user="root";
$password="";
$database="phppractice";
mysql_connect('localhost:3306',$user,$password);
@mysql_select_db($database) or die( "Unable to select database");

$result = 10;
$query="call VerifyUserNPass(" . $user . "," . $result . ");";
$result = mysql_query($query);

正しい結果が得られません。

4

1 に答える 1

3

CALL 構文

MySQL インターフェイスを提供する言語で作成されたプログラムの場合 、CALL ステートメントから OUT または INOUT パラメータの結果を直接取得するためのネイティブ メソッドはありません。パラメーター値を取得するには、CALL ステートメントでユーザー定義変数をプロシージャーに渡し、次に SELECT ステートメントを実行して、変数値を含む結果セットを生成します。INOUT パラメータを処理するには、CALL の前に、対応するユーザー変数をプロシージャに渡される値に設定するステートメントを実行します。

したがって、このようにする必要があります

mysql_connect('localhost:3306',$user,$password);
mysql_select_db($database, $link);

mysql_query("CALL VerifyUserNPass('$user', @result)", $link);
$result = mysql_query("SELECT @result result", $link);
$row = mysql_fetch_assoc($result);
echo $row['result'];
mysql_free_result($result);

結果がINOUTパラメーターの場合、SP 呼び出しの前に値を設定する必要があります

mysql_query($link, "SET @result = 10");

簡潔にするために、すべてのエラー チェックは意図的に省略されています

于 2013-03-16T16:29:11.623 に答える