2010-08-26 18 views
1

一直在Google上尋找此內容,但仍在尋找。無法打開任何東西。PHP中的ODBC錯誤:「此結果索引中沒有可用的元組」

使用PHP通過ODBC查詢MS SQL Server。代碼如下:(我已經澆灌下來到裸機,因爲我已經嘗試調試此)

$SQL=<<<HEREDOC 
DECLARE @weekStart SMALLDATETIME; 
SET  @weekStart = DATEADD(d,0, DATEDIFF(d,0,GETDATE())); 
SET  @weekStart = DATEADD(d, 1-DATEPART(dw, GETDATE()), @weekStart); 

SELECT 
    DATEDIFF(week, Run_Date, @weekStart) 
          AS weeksAgo 

    ,MIN(Current_List)  AS list 

    ,COUNT(*)    AS cnt 

    ,SUM(NoContact_90Days) AS noContact90 
    ,SUM(NoContact_180Days) AS noContact180 

    ,SUM(NoMtg_180Days)  AS noMtg180 
    ,SUM(NoMtg_360Days)  AS noMtg360 
FROM 
    [someDB].[DBO].[someTable] 
WHERE 
    Current_List<>'' 
GROUP BY 
    DATEDIFF(week, Run_Date, @weekStart) 
    ,Current_List 
ORDER BY DATEDIFF(week, Run_Date, @weekStart) 

; 
HEREDOC; 


    $dbUser = "someUser"; 
    $dbPass = "somePw"; 
    $connStr = 'Driver={SQL Server};Server=someServer;'; 

    $conn = odbc_connect($connStr, $dbUser, $dbPass) 
     or die("Cannot start ODBC connection"); 

    $rs = odbc_exec($conn, $SQL); 
    $r = odbc_fetch_array($rs); 
    die('ok'); 

獲得我從來沒有見過的odbc_fetch_array警告()行:

Message: odbc_fetch_array() [function.odbc-fetch-array]: No tuples available at this result index 

我已經在SQL Server Mgmt Studio中運行查詢,並且它返回一組記錄。我使用這個連接字符串&方法檢索應用程序的其他部分中的行沒有問題。有任何想法嗎?

+0

「它返回_a單set_記錄」 - 我認爲這是值得在你的PHP腳本測試,尤其是因爲它很容易'while(odbc_next_result($ rs))echo'#';' – VolkerK 2010-08-26 22:54:05

+0

謝謝,VolkerK 。當我進入我的辦公室時,我會明天嘗試一下。 – loneboat 2010-08-27 02:29:57

+0

@VolerK:啊!它正在返回_two_結果。謝謝你的提示。任何想法爲什麼?這是一個簡單的問題,我想。也許是因爲它不只是一個單一的陳述?再次感謝! – loneboat 2010-08-27 12:59:18

回答

3

每個SET命令「返回結果集」,因此您可以在odbc_fetch_array(or smth else)之前使用odbc_next_result() ($n-1)次。其中$ N - 行

$n = 0 
while (odbc_next_result($some_result)) $n = $n + 1 
0

有時也發生在你不執行,節省了查詢

錯了相同的變量數

$SQL = "SELECT * FROM TABLENAME"; 
$rs=odbc_exec($con, $SLQ); 
while($row = odbc_fetch_array($rs)){ 
    ... 
} 

正確

$SQL = "SELECT * FROM TABLENAME"; 
$rs=odbc_exec($con, $SQL); 
while($row = odbc_fetch_array($rs)){ 
    ... 
} 

在第二個例子中,如果我們把相同的變量$SQL

相關問題