ホームページ  >  記事  >  データベース  >  PDO を使用して OUT パラメーターを含むストアド プロシージャから出力を取得する方法

PDO を使用して OUT パラメーターを含むストアド プロシージャから出力を取得する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-07 08:12:02797ブラウズ

How to Retrieve Output from Stored Procedures with OUT Parameters Using PDO?

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 パラメーターが取得されることを期待します。次の手順は正しいアプローチの概要です:

  1. PDO ステートメントを準備します:

    $stmt = $db->prepare("CALL proc_OUT(?)");
  2. バインドOUT パラメータ:

    $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
  3. ストアド プロシージャを実行します:

    $stmt->execute();
  4. 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 サイトの他の関連記事を参照してください。

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