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

Patricia Arquette
リリース: 2024-11-08 11:25:01
オリジナル
1016 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート