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

Linda Hamilton
リリース: 2024-11-07 08:12:02
オリジナル
795 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!