ホームページ  >  記事  >  データベース  >  PHP で入出力パラメータを使用して MySQL ストアド プロシージャを呼び出す方法

PHP で入出力パラメータを使用して MySQL ストアド プロシージャを呼び出す方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 00:26:02540ブラウズ

How to Call MySQL Stored Procedures with Input and Output Parameters in PHP?

PHP で入力パラメータと出力パラメータの両方を使用して MySQL ストアド プロシージャを呼び出す

開発者は、多くの場合、PHP スクリプトからストアド プロシージャを呼び出す必要に遭遇します。ストアド プロシージャは、入力パラメータと出力パラメータの組み合わせを取ることができます。入力パラメータはプロシージャに値を提供し、出力パラメータはプロシージャから計算された値を受け取ります。この記事では、「inout」パラメータを除く、特に入力パラメータと出力パラメータの両方を取る MySQL ストアド プロシージャの呼び出しに焦点を当てます。

MySQLi インターフェイスの課題

残念ながら、MySQLi の手続き型インターフェイスとオブジェクト指向インターフェイスは、出力ストアド プロシージャ パラメータのネイティブ サポートが不足しています。回避策として、MySQL ユーザー変数を利用して出力値を受け取り、別の SELECT ステートメントを使用してそれらを取得できます。ユーザー変数と SELECT ステートメントを実装することにより、入力パラメータと出力パラメータの両方を使用してストアド プロシージャを効果的に処理できます。

手続き型アプローチ

手続き型 MySQLi インターフェイスを使用した次の PHP コードを検討してください。

$procInput1 = 123;
$procInput2 = 456;
$procInput3 = 789;

$mysqli = mysqli_connect();

$call = mysqli_prepare($mysqli, 'CALL test_proc(?, ?, ?, @sum, @product, @average)');
mysqli_stmt_bind_param($call, 'iii', $procInput1, $procInput2, $procInput3);
mysqli_stmt_execute($call);

$select = mysqli_query($mysqli, 'SELECT @sum, @product, @average');
$result = mysqli_fetch_assoc($select);
$procOutput_sum = $result['@sum'];
$procOutput_product = $result['@product'];
$procOutput_average = $result['@average'];

この例では、MySQL ユーザー変数 (@sum、@product、@average) がストアド プロシージャで定義されています。 mysqli_query("SELECT @sum, @product, @average") への呼び出しは、ストアド プロシージャによって設定された値を取得し、それらを PHP 変数 ($procOutput_sum、$procOutput_product、$procOutput_average) に割り当てます。

Object-指向アプローチ

代わりに、オブジェクト指向の MySQLi インターフェースを使用することもできます。

$procInput1 = 123;
$procInput2 = 456;
$procInput3 = 789;

$mysqli = new mysqli();

$call = $mysqli->prepare('CALL test_proc(?, ?, ?, @sum, @product, @average)');
$call->bind_param('iii', $procInput1, $procInput2, $procInput3);
$call->execute();

$select = $mysqli->query('SELECT @sum, @product, @average');
$result = $select->fetch_assoc();
$procOutput_sum = $result['@sum'];
$procOutput_product = $result['@product'];
$procOutput_average = $result['@average'];

オブジェクト指向のアプローチは、prepare()、bind_param()、execute() を利用して、同様のパターンに従います。 () および query() メソッドを使用して、ストアド プロシージャを呼び出し、ユーザー変数を通じて出力値を取得します。

MySQL ユーザー変数と SELECT ステートメントを利用することで、PHP 開発者は、入力と出力の両方を必要とするストアド プロシージャを効果的に呼び出すことができます。パラメータ。この手法は、MySQLi インターフェイスでネイティブ出力パラメーターがサポートされていない場合の回避策を提供します。

以上がPHP で入出力パラメータを使用して MySQL ストアド プロシージャを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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