目标: 从 MySQL 存储过程中获取 LAST_INSERT_ID() 值并将其分配给一个 PHP 变量。
尽管提供了 PHP 代码,但使用PDO 绑定,无法从 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