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