首页  >  文章  >  数据库  >  如何使用 PDO 从 PHP 中的 MySQL 存储过程检索输出变量?

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

Linda Hamilton
Linda Hamilton原创
2024-11-06 09:57:02241浏览

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变量绑定到INOUT MySQL 过程的 OUT 参数可能会遇到运行时错误。建议仅将变量绑定到 IN 参数。

以上是如何使用 PDO 从 PHP 中的 MySQL 存储过程检索输出变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn