3

我使用 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 ,则会引发错误“此结果索引处没有可用的元组”。

如果我在 Management Studio 中运行完全相同的查询,一切正常。它向我显示了计算出的 generateID。有什么不同?

迎接亚历克斯

4

2 回答 2

2

尝试在查询前加上:

set nocount on

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

于 2013-11-04T10:04:46.137 回答
0

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

$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

    }
}
于 2015-08-19T09:45:51.540 回答