PHP PDO を使用して MySQL ストアド プロシージャから LAST_INSERT_ID() を取得する方法

Susan Sarandon
リリース: 2024-11-07 12:00:05
オリジナル
761 人が閲覧しました

How to Retrieve LAST_INSERT_ID() from MySQL Stored Procedure Using PHP PDO?

PHP PDO を使用して MySQL ストアド プロシージャから LAST_INSERT_ID() を取得する

PHP PDO で MySQL ストアド プロシージャから LAST_INSERT_ID() 値を取得するには、混乱を招く作業になる。広範なドキュメントがあるにもかかわらず、開発者にとって依然として共通の課題の原因となっています。この問題の解決策を見ていきましょう。

主な問題は、MySQL がストアド プロシージャ内で IN、INOUT、OUT パラメータに変数を使用するという事実にあります。 LAST_INSERT_ID() を取得するには、2 段階のプロセスが必要です。

ステップ 1: 変数を使用してストアド プロシージャを実行する

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

このステップでは、ストアド プロシージャを実行します。プロシージャを実行し、入力値を渡すだけでなく、LAST_INSERT_ID() 値を受け取る変数を宣言します。ただし、PHP 変数の値に直接アクセスすることはできません。

ステップ 2: 変数の値を取得する

LAST_INSERT_ID() を取得するには、次のコマンドを実行する必要があります。 SQL 変数に割り当てられた値を取得するための別のクエリ。これには、SQL ユーザー変数の設定とその値を選択するためのクエリの実行が含まれます。

$sql = "SELECT @returnid AS last_insert_id";
$result = $db->query($sql)->fetch();
$last_insert_id = $result['last_insert_id'];
ログイン後にコピー

これらの手順に従うことで、PHP PDO を使用して MySQL ストアド プロシージャから LAST_INSERT_ID() 値を正常に取得できます。 PHP 変数を INOUT または OUT パラメーターにバインドするとエラーが発生する可能性があることに注意することが重要です。代わりに、SQL ユーザー変数を使用して変数パラメーターを処理します。

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

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