”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何使用 PDO 从 PHP 中的 MySQL 存储过程检索输出变量?

如何使用 PDO 从 PHP 中的 MySQL 存储过程检索输出变量?

发布于2024-11-18
浏览:516

How to Retrieve Output Variables from MySQL Stored Procedures in PHP with PDO?

使用 PDO 在 PHP 中检索存储过程输出变量

目标: 从 MySQL 存储过程中获取 LAST_INSERT_ID() 值并将其分配给一个 PHP 变量。

问题陈述

尽管提供了 PHP 代码,但使用PDO 绑定,无法从 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