」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 PDO 從 PHP 中的 MySQL 預存程序檢索輸出變數?

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

發佈於2024-11-18
瀏覽:772

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 MySQL 程序的 INOUT 和 OUT 參數的變數可能會遇到執行階段錯誤。建議僅將變數綁定到 IN 參數。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3