PHP中的MSSQL_query返回不同于SQL Native Sproc的不同结果

时间:2012-05-29 19:14:06

标签: php sql iis

之前有人遇到过这个吗?

我在SQL中有一个带有以下参数的存储过程:

    exec PaySummary 'DemoTest', 'DemoTest-Mohn-00038', '5/14/12', '5/27/12', 'manager', 'DemoTest-Boyd-00005'

PHP中的以下MSSQL查询运行完全相同的查询。

private function dataTest(){
    $strSQL = 'exec PaySummary \'DemoTest\', \'DemoTest-Mohn-00038\', \'5/14/12\', \'5/27/12\', \'manager\', \'DemoTest-Boyd-00005\'';
    $a = mssql_query($strSQL);

    echo $strSQL;

    while($row=mssql_fetch_array($a)){
        var_dump($row);     


    }

}

在SQL中运行此查询时,我将获得3个结果...

当通过SQL在PHP中运行时,我得到2个结果......

是否有必须在SQL存储过程上设置的运行时设置(设置NoCOUNT)以确保结果输出的准确性?或者是否存在传递日期参数的已知问题,这会影响日期驱动的存储过程的结果?

Microsoft-IIS / 5.0 / PHP / 5.2.5 / SQL Server 2008 R2(执行存储过程的地方)。

1 个答案:

答案 0 :(得分:1)

对于处于相同情况的任何人......它是由SQL中的NULL_CONCAT_NULL(或其他)选项引起的。这一个标志可以使存储过程运行一点点取决于你如何使用concat等。解决这个问题的一个好方法是通过ISNULL围绕你的很多项目,这似乎摆脱了获得不同结果的问题

如果您不想修复您的sprocs,还有另一个选项是检查sql正在经历的路径(TCP / IP等)。我注意到在审核时,根据sql运行的端口,某些设置会有很大不同。