首頁  >  文章  >  資料庫  >  如何使用 PDO 從 PHP 中的 MySQL 預存程序檢索輸出變數?

如何使用 PDO 從 PHP 中的 MySQL 預存程序檢索輸出變數?

Linda Hamilton
Linda Hamilton原創
2024-11-06 09:57:02241瀏覽

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() 輸出變數。

解釋

在PHP PDO 中從MySQL 預存程序取得輸出變數涉及兩個階段的過程:

  1. 執行預存程序並將輸出變數指派給MySQL用戶變數。
  2. 查詢 MySQL 使用者變數以將其值擷取到 PHP 變數中。

解決方案:兩階段過程

第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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn