目的: MySQL ストアド プロシージャから LAST_INSERT_ID() 値をフェッチし、それに割り当てます。 PHP 変数。
PDO バインディングを使用して提供された PHP コードにもかかわらず、simpleProcedure ストアド プロシージャから LAST_INSERT_ID() 出力変数をキャプチャできません。
MySQL から出力変数をフェッチしていますPHP PDO のストアド プロシージャには、
ステージ 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 変数に割り当てます。
Binding PHP MySQL プロシージャの INOUT および OUT パラメータに変数を追加すると、実行時エラーが発生する可能性があります。変数は IN パラメータにのみバインドすることをお勧めします。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3