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