MS SQL 查询在 PHP 中失败,但在 MS SQL Server Management Studio 中失败


MS SQL Query failed in PHP but not in MS SQL Server Management Studio

>我使用 php 和 odbc 驱动程序执行此查询

$sql="DECLARE @Auftrag int; 
DECLARE @date_now datetime = getdate(); 
EXEC @Auftrag=EHS.dbo.SP_ANZEIGE 
@Tablet=1, 
@Status=0, 
@KuNr='K015538'; 
SELECT 'generatedID'=@Auftrag;";
$res = odbc_exec($db1_link, $sql) or die(odbc_errormsg()); // returns resource(13)
$firstRow = odbc_fetch_array($res); // dies error

如果我这样做odbc_fetch_array则抛出错误"此结果索引中没有可用的元组"。

如果我在管理工作室中运行完全相同的查询,一切正常。它向我显示了计算生成的 ID。有什么区别?

问候亚历克斯

尝试在查询前面加上:

set nocount on

这可以防止 SQL Server 发送行计数更新,UNIX 客户端有时会将其误认为是实际的行集。

我也有同样的问题。就我而言,我像这样执行

$sql = "SELECT * FROM table1";
$resultSet = odbc_exec($sqllink, $sql);
while ($data = odbc_fetch_array($resultSet)) {
    $sql = "SELECT * FROM table2";
    $resultSet2 = odbc_exec($sqllink, $sql);//failed here
    while ($data2 = odbc_fetch_array($resultSet2)) {
           //something here
    }
}

我像这样改变了,它奏效了

$sql = "SELECT * FROM table1";
$resultSet = odbc_exec($sqllink, $sql);
// Create an array and store the results
$queryResult = array();
while ($data = odbc_fetch_array($resultSet)) {
    // push the required content into the array
    $queryResult[$data['id']]['name'] = $data[name];
}
foreach($queryResult as $row) {
    $sql = "SELECT * FROM table2";
    $resultSet2 = odbc_exec($sqllink, $sql);
    while ($data2 = odbc_fetch_array($resultSet2)) {
        // something here
    }
}