gpt4 book ai didi

php - PDO 存储过程返回值

转载 作者:可可西里 更新时间:2023-11-01 13:27:17 25 4
gpt4 key购买 nike

我正在使用一个返回错误代码的 SQL Server 存储过程;这是 SP 的一个非常简单的片段。

DECLARE @ret int
BEGIN
SET @ret = 1
RETURN @ret
END

我可以使用 mssql 扩展获取返回值:

mssql_bind($proc, "RETVAL", &$return, SQLINT2);

但是,我不知道如何访问 PDO 中的返回值;我不想使用 OUT 参数,因为已经编写了很多这些存储过程。这是我目前如何在 PHP 中调用过程的示例。

$stmt = $this->db->prepare("EXECUTE usp_myproc ?, ?");
$stmt->bindParam(1, 'mystr', PDO::PARAM_STR);
$stmt->bindParam(2, 'mystr2', PDO::PARAM_STR);
$rs = $stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

最佳答案

Check out MSDN for info on how to correctly bind to this type of call

您的 PHP 代码可能应该调整为看起来更像这样。这可能仅在您通过 ODBC 调用时有效,老实说,这是对 SQL Server 执行任何操作的首选方式;在 Windows 系统上使用 SQL Native Client,在 *nix 系统上使用 FreeTDS ODBC 驱动程序:

<?php
$stmt = $this->db->prepare("{?= CALL usp_myproc}");
$stmt->bindParam(1, $retval, PDO::PARAM_STR, 32);
$rs = $stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "The return value is $retval\n";
?>

这里的关键是返回值可以绑定(bind)为 OUT 参数,而无需重构存储过程。

关于php - PDO 存储过程返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/984786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com