PHP で PDO を使用して MySQL ストアド プロシージャ変数を取得する
MySQL ストアド プロシージャから LAST_INSERT_ID() の値を取得するのは、困難な作業になる場合があります。オンラインには豊富なドキュメントがあるにもかかわらず、このプロセスは多くの開発者にとってわかりにくいことがよくあります。この記事は、この問題をわかりやすくすることを目的としており、PHP PDO を使用して変数の値を取得するためのステップバイステップのガイドを提供します。
「IN」、「INOUT」、「OUT」を使用した PHP プロシージャ パラメータパラメータ
変数を取得する鍵は、関係する 2 段階のプロセスを理解することです。まず、必要な入力パラメータと結果を保存する変数を使用してプロシージャを実行する必要があります。その後、別のクエリが実行され、指定された変数から値が取得されます。
PDO を使用して MySQL ストアド プロシージャを取得するための 2 段階のプロセス
このプロセスをデモンストレーションするには、次のようにします。次のシナリオを考えてみましょう:
SQL プロシージャ:
CREATE PROCEDURE `demoSpInOutSqlVars`(IN pInput_Param INT, INOUT pInOut_Param INT, OUT pOut_Param INT) BEGIN /* * Pass the full names of SQL User Variable for these parameters. e.g. '@varInOutParam' * These 'SQL user variables names' are the variables that Mysql will use for: * 1) finding values * 2) storing results * * It is similar to 'variable variables' in PHP. */ SET pInOut_Param := ABS(pInput_Param) + ABS(pInOut_Param); /* always positive sum */ SET pOut_Param := ABS(pInput_Param) * -3; /* always negative * 3 */ END
PHP コード:
// DB Connection $db = appDIC('getDbConnection', 'default'); // get the default db connection $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); // Set PHP Variables $phpInParam = 5; $phpInOutParam = 404; // PHP InOut variable $phpOutParam = null; // PHP Out variable // Define and Prepare the SQL procedure call $sql = "call demoSpInOut(:phpInParam, @varInOutParam, /* mysql variable name will be read and updated */ @varOutParam)"; /* mysql variable name that will be written to */ $stmt = $db->prepare($sql); // Bind PHP Variables and Set SQL Variables $stmt->bindParam(':phpInParam', $phpInParam, PDO::PARAM_INT); $db->exec("SET @varInOutParam = $phpInOutParam"); // This is safe as it just sets the value into the MySql variable. // Execute the procedure $allOk = $stmt->execute(); // Get the SQL Variables into the PHP variables $sql = "SELECT @varInOutParam AS phpInOutParam, @varOutParam AS phpOutParam FROM dual"; $results = current($db->query($sql)->fetchAll()); $phpInOutParam = $results['phpInOutParam']; $phpOutParam = $results['phpOutParam']; // Display the PHP variables echo "phpInParam = " . $phpInParam . "\n"; echo "phpInOutParam = " . $phpInOutParam . "\n"; echo "phpOutParam = " . $phpOutParam . "\n";
追加メモ:
結論:
PHP での MySQL ストアド プロシージャ変数の取得 PDO は、プロシージャの実行と、 SQL ユーザー変数から値を取得します。上記の手順に従うことで、開発者は PDO を使用して MySQL ストアド プロシージャから必要な変数に効率的にアクセスできます。
以上がPHP で PDO を使用して MySQL ストアド プロシージャ変数を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。