【问题标题】:How to get output values from a MS SQL stored procedure using PHP?如何使用 PHP 从 MS SQL 存储过程中获取输出值?
【发布时间】:2014-11-13 13:33:29
【问题描述】:

我的 MS SQL 服务器上有以下存储过程:

CREATE PROCEDURE checkFollowing 
(
    @myMemberID INT,
    @otherMemberID INT
)
AS
BEGIN

IF EXISTS (SELECT 1 FROM Followers WHERE follower = @myMemberID AND followed = @otherMemberID)
    RETURN 1
ELSE
    RETURN 0    
END 
GO

到目前为止,在我的 PHP 代码中,我有这个方法:

function iAmFollowing($mymemberID, $otherMemberID) {
    $query = "EXEC checkFollowing @myMemberID = ?, @otherMemberID = ?";
    $stmt = sqlsrv_query($this->con, $query, array(&$mymemberID, &$otherMemberID));
    $result = sqlsrv_fetch_array($stmt);

    return $result[0];
}

正如我现在所意识到的,我无法使用 sqlsrv_fetch_array() 命令获取返回值。但我似乎无法弄清楚如何使用 php 获取输出值。 有人知道如何实现吗?

任何帮助将不胜感激。

解决方案

CREATE PROCEDURE checkFollowing 
(
    @myMemberID INT,
    @otherMemberID INT
)
AS
BEGIN

IF EXISTS (SELECT 1 FROM Followers WHERE follower = @myMemberID AND followed = @otherMemberID)
    SELECT 1 AS 'output'
ELSE
    SELECT 0 AS 'output'    
END 
GO

和php代码应该差不多。只需将返回值更改为: $结果['输出'];

【问题讨论】:

    标签: php sql-server stored-procedures sqlsrv


    【解决方案1】:

    在您的 SP 的参数列表中声明 OUTPUT parameterOUTPUT parameter 将数据返回给调用应用程序。查看此Link了解更多信息

    CREATE PROCEDURE checkFollowing 
    (
        @myMemberID INT,
        @otherMemberID INT,
        @output INT OUTPUT
    )
    AS
    BEGIN
    
    IF EXISTS (SELECT 1 FROM Followers WHERE follower = @myMemberID AND followed = @otherMemberID)
        SELECT @output= 1
    ELSE
        SELECT @output= 0    
    END 
    GO
    

    更新:

    调用 SP 并存储输出。试试这样的

    DECLARE @appout int; -- variable to hold the data returned by SP.
    
    EXEC checkFollowing 10,20, @output = @appout OUTPUT; -- This is how i will call a SP.
    
    @appout - will hold the data returned by the procedure.
    

    【讨论】:

    • 感谢您的回答。因此,当我尝试使用以下命令运行它时:“EXEC checkFollowing @memMymberID = ???, \@otherMemberID = ???;”它什么也不返回。你知道穿什么吗?
    • @user68621 _ 不熟悉PHP 编码。我只是 TSQL 家伙。检查我的答案,这就是我将如何调用带有输出参数的 SP。
    • 啊,好吧。当我在 mssql 管理工作室中运行它时,您的解决方案正在运行,但我还需要让我的 PHP 代码检索输出参数。但是到目前为止,我感谢您的帮助:)
    • 我发现了如何解决这个问题。但是您的建议也是解决问题的方法(无论如何是 SQL 部分)。所以我会接受你的回答。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 2013-06-11
    • 2017-07-05
    • 2018-06-08
    相关资源
    最近更新 更多