目標: 從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 MySQL 程序的 INOUT 和 OUT 參數的變數可能會遇到執行階段錯誤。建議僅將變數綁定到 IN 參數。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3