通过 PHP 在 SQL Server 上执行存储过程时出现问题 [已关闭]

Problem in executing Stored Procedure on SQL Server Via PHP [closed]

提问人:Uri Chachick 提问时间:10/24/2023 更新时间:10/24/2023 访问量:53

问:


这个问题是由错别字或无法再现的问题引起的。虽然类似的问题可能在这里是主题,但这个问题的解决方式不太可能帮助未来的读者。

28天前关闭。

我正在运行以下代码:

$conn = sqlsrv_connect( $serverName, $connectionInfo);

$affiliateId = 0;
$month = 10;
$year = 2023;
$groupid = 17;
$search = '';

$procedure_params = array(
    array(&$affiliateId, SQLSRV_PARAM_IN),
    array(&$month, SQLSRV_PARAM_IN),
    array(&$year, SQLSRV_PARAM_IN),
    array(&$groupid, SQLSRV_PARAM_IN),
    array(&$search, SQLSRV_PARAM_IN)
);

$sql = "EXEC [dbo].[smart_getAffiliateLeadListSearch] @AffiliateId = ?, @month = ?, @year = ?, @groupId = ?, @search = ?";

$stmt = sqlsrv_prepare($conn, $sql, $procedure_params);


if( !$conn ) {
    echo 'Connection error<br>';
    die( '<pre>'.print_r( sqlsrv_errors(), true).'</pre>');
} else if( !$stmt ) {
    echo 'Statment error<br>';
    die( '<pre>'.print_r( sqlsrv_errors(), true).'</pre>');
} else if( sqlsrv_execute( $stmt ) === false ) {
    echo 'Execution error<br>';
    die( '<pre>'.print_r( sqlsrv_errors(), true).'</pre>');
}

我得到以下输出

Execution error

Array
(
    [0] => Array
        (
            [0] => 01000
            [SQLSTATE] => 01000
            [1] => 0
            [code] => 0
            [2] => [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]Oct  1 2023 12:00AM
            [message] => [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]Oct  1 2023 12:00AM
        )

    [1] => Array
        (
            [0] => 01000
            [SQLSTATE] => 01000
            [1] => 0
            [code] => 0
            [2] => [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]Nov  1 2023 12:00AM
            [message] => [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]Nov  1 2023 12:00AM
        )

)

我不明白这些错误。似乎错误消息只是日期。
我很想得到一些帮助。

我为查询尝试了不同的语法(带和不带括号,带和不带前缀的 [dbo])。 我试过使用sqlsrv_prepare和sqlsrv_query。得到了几乎相同的结果。

我希望得到数据,但sqlsrv_execute不断给我错误。

php sql-server sqlsrv

评论

4赞 siggemannen 10/24/2023
听起来像是在输出 PRINT?还是代码中有一些 raiserror?
0赞 Uri Chachick 10/24/2023
它应该输出数据行,但无法到达那里。正如你所看到的,sqlsrv_execute返回错误和错误,让我无话可说......只有日期。
0赞 Uri Chachick 10/24/2023
另外,我不知道什么是raiserror:)所以我可能不明白你的评论。
1赞 siggemannen 10/24/2023
如果您在 Management Studio 或其他设备中手动运行输出,您会收到什么样的消息/结果
1赞 siggemannen 10/24/2023
伟大!您可能还想看这里:stackoverflow.com/questions/48082109/...并更改您的设置,以便添加 PRINT 的人不会无意中扰乱您的逻辑

答: 暂无答案