PDO を使用して PHP の MySQL ストアド プロシージャから出力変数を取得する方法

Linda Hamilton
リリース: 2024-11-06 09:57:02
オリジナル
305 人が閲覧しました

How to Retrieve Output Variables from MySQL Stored Procedures in PHP with PDO?

PDO を使用した PHP のストアド プロシージャ出力変数の取得

目的: MySQL ストアド プロシージャから LAST_INSERT_ID() 値をフェッチし、それに割り当てます。 PHP 変数。

問題ステートメント

PDO バインディングを使用して提供された PHP コードにもかかわらず、simpleProcedure ストアド プロシージャから LAST_INSERT_ID() 出力変数をキャプチャできません。

説明

MySQL から出力変数をフェッチしていますPHP PDO のストアド プロシージャには 2 つの段階が含まれますprocess:

  1. ストアド プロシージャを実行し、出力変数を MySQL ユーザー変数に割り当てます。
  2. MySQL ユーザー変数をクエリして、その値を PHP 変数に取得します。

解決策: 2 段階のプロセス

ステージ 1:プロシージャの実行

$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11, PDO::PARAM_INOUT);  // Note the PDO::PARAM_INOUT
$stmt->execute();
ログイン後にコピー

:returnid プレースホルダーを INOUT としてバインドすると、PDO は PHP 変数をプロシージャに渡すだけでなく、出力変数の値で更新します。

ステージ 2: 出力の取得変数

$sql = "SELECT @returnid AS output_id";
$result = $db->query($sql)->fetch(PDO::FETCH_ASSOC);

$lastInsertId = $result['output_id'];
ログイン後にコピー

MySQL ユーザー変数 @returnid をクエリして、その値を $lastInsertId PHP 変数に割り当てます。

PHP 変数を INOUT およびMySQL プロシージャの OUT パラメータでは、実行時エラーが発生する可能性があります。変数は IN パラメータにのみバインドすることをお勧めします。

以上がPDO を使用して PHP の MySQL ストアド プロシージャから出力変数を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート