目标: 从 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中文网其他相关文章!