ホームページ  >  記事  >  データベース  >  PHP を使用して入力パラメータと出力パラメータの両方を指定して MySQL ストアド プロシージャを実行する方法

PHP を使用して入力パラメータと出力パラメータの両方を指定して MySQL ストアド プロシージャを実行する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-08 11:25:011022ブラウズ

How to Execute MySQL Stored Procedures with Both Input and Output Parameters Using PHP?

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

PHP で、入力パラメータと出力パラメータの両方を必要とする MySQL ストアド プロシージャを実行する挑戦になる可能性があります。 MySQLi は入力パラメータと出力パラメータを個別に処理するための特定の関数を提供しますが、このシナリオを直接サポートすることはありません。

この制限を克服するには、MySQL ユーザー変数を含む回避策が必要です。仕組みの詳細は次のとおりです:

MySQLi 手続き型インターフェイスの使用:

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

$mysqli = mysqli_connect('host', 'user', 'password', 'database');

$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 データベースへの接続を確立します。 。準備されたステートメントは、バインドされた入力パラメーターを使用してストアド プロシージャを実行するために使用されます。実行後、別のクエリを使用して、MySQL ユーザー変数に保存されている出力パラメータを取得します。

MySQLi オブジェクト指向インターフェイスの使用:

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

$mysqli = new mysqli('host', 'user', 'password', 'database');

$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'];

このコードは、次のことを示します。オブジェクト指向インターフェイスを使用した同じアプローチで、データベース接続とストアド プロシージャの実行はオブジェクト メソッドを通じて処理されます。

MySQL ユーザー変数を使用した回避策を活用することで、入力パラメータと出力パラメータの両方を使用してストアド プロシージャを効果的に実行できます。 PHP では MySQLi インターフェースを使用します。

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

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