2013-01-21 88 views
0

我有一個小型PHP腳本從數據庫中檢索值。它可以工作,但它只是缺少記錄集的第一個記錄。爲什麼我的腳本缺少記錄集的第一條記錄?

下面是代碼:

$conn = odbc_connect("database","user","passwd"); 

if (!$conn) { 
    echo $php_errormsg; 
    die("Connection failed"); 
} 

$sql = "EXEC dbo.pr_stored_procedure param1, param2"; 

echo ("sql=". $sql."\n"); 
$rs=odbc_exec($conn,$sql); 


while(odbc_fetch_row($rs)) { 
    $item1 = odbc_result($rs,"item1"); 
    $item2 = odbc_result($rs,"item2"); 
    echo($item1 . " " . $item2); 
} 

odbc_close($conn); 

我不明白爲什麼它會跳過第一行,因爲這是很基本的。

+0

Daft問題,但你確定你調用的存儲過程如預期的那樣工作嗎? – ste

+0

是的,因爲當與ASP經典相同時,它可以工作...所有值都得到檢索 – meda

+0

也許嘗試在while循環之前使用'odbc_fetch_row($ rs,1);'以確保選擇了第一條記錄 –

回答

0

它可能是您使用的ODBC驅動程序或其他庫中的錯誤。

對於在該環境中執行的類似查詢,或者當您更改參數以返回不同的數據集時,是否有問題?

你已經寫了這個查詢從ASP工作,但也嘗試在其他ODBC環境中執行它。我最喜歡的是帶有odbc模塊的ActivePython或具有JDBC-ODBC橋接的Jython。你會在我的問題中找到這樣的代碼的例子:How to get trailing spaces from varchar column in Informix using ODBC

也許有什麼特別的第一行?例如:我看到Linux的Informix ODBC驅動程序,如果第一列是datetime,則返回第一行的空數據。

只要您看到此查詢在其他ODBC環境中工作,請嘗試啓用ODBC跟蹤並將來自工作環境的跟蹤與來自PHP的跟蹤進行比較。