目標: 從MySQL 預存程序中取得LAST_INSERT_ID() 值並將其指派給PHP 變數。
儘管提供了使用 PDO 綁定的 PHP 程式碼,但它無法從 simpleProcedure 預存程序中捕獲 LAST_INSERT_ID() 輸出變數。
在PHP PDO 中從MySQL 預存程序取得輸出變數涉及兩個階段的過程:
第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中文網其他相關文章!