PDO を使用した OUT パラメーターを使用したストアド プロシージャの呼び出し
データベース プログラミングでは、複雑なデータベース操作をカプセル化するためにストアド プロシージャが不可欠です。 PDO を使用してストアド プロシージャから出力を取得するのは難しい場合があります。
問題:
PDO を使用して OUT パラメータを指定してストアド プロシージャを呼び出すと、次のようなエラーが発生する可能性があります。
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1414 OUT or INOUT argument 1 for routine mydb.proc_OUT is not a variable or NEW pseudo-variable in BEFORE trigger
解決策:
PDO は、別のクエリを使用して OUT パラメーターが取得されることを期待します。次の手順は正しいアプローチの概要です:
PDO ステートメントを準備します:
$stmt = $db->prepare("CALL proc_OUT(?)");
バインドOUT パラメータ:
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
ストアド プロシージャを実行します:
$stmt->execute();
OUT パラメータをクエリします:
$stmt2 = $db->query("SELECT @return_value"); $row = $stmt2->fetch(PDO::FETCH_NUM); $return_value = $row[0];
例:
OUT パラメータを使用してストアド プロシージャを呼び出す例を次に示します:
$db = new PDO("mysql:host=localhost;dbname=mydb", "username", "password"); // Stored procedure definition $sql = "CREATE PROCEDURE proc_OUT (OUT var1 VARCHAR(100)) BEGIN SET var1 = 'This is a test'; END"; $db->query($sql); // Call the stored procedure $stmt = $db->prepare("CALL proc_OUT(?)"); $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); $stmt->execute(); // Query the OUT parameter $stmt2 = $db->query("SELECT @return_value"); $row = $stmt2->fetch(PDO::FETCH_NUM); $return_value = $row[0]; echo $return_value; // Output: 'This is a test'
このアプローチに従うと、PDO を使用して OUT パラメーターを使用してストアド プロシージャを正常に呼び出すことができます。
以上がPDO を使用して OUT パラメーターを含むストアド プロシージャから出力を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。