2011-12-02 47 views
0

我對ADO和PHP使用基本的SQL查詢,但行數總是返回-1。我錯過了什麼?

這裏是我的代碼:

include 'constants.php'; 

// Create an instance of the ADO connection object 
$conn = new COM ("ADODB.Connection") 
    or die("Cannot start ADO"); 

// Open the connection to the database 
$conn->open(DB_CONN_STR); 

$query = "select * from table_name"; 

$rs = $conn->execute($query); 

if (!$rs) { 
    return; 
} 
else { 
    return $rs->RecordCount(); 
} 

我知道這表有值...我缺少什麼?

+0

哪裏是執行函數的代碼和RecordCount()的代碼;這是唯一可能出錯的地方。 –

回答

2

該手冊說明了原因。 http://phplens.com/lens/adodb/docs-adodb.htm#recordcount

看來你已經設置

$ ADODB_COUNTRECS =假

+0

除非這是默認值,我還沒有碰它... – Paul

+0

這是我需要啓用服務器端爲MSSQL的東西? – Paul

+0

我從來沒有使用過adodb,但它聽起來像一個庫配置選項,它基於它們解釋當驅動程序不支持它(緩存所有行時)獲取計數的方式。 – goat

0

我不得不使用ADODB與PHP類似的問題,與PDO MSSQL的驅動程序。

  • 我在try/catch塊執行的SQL查詢與GetOneLimitQuery
  • 查詢導致錯誤
  • 我捕捉到的異常,並繼續與Execute
  • 執行有效的查詢結果調用RecordCount將錯誤地返回-1(但我可以遍歷行)。

我發現一些Adodb函數在執行查詢之前將$ADODB_COUNTRECS標誌設置爲false。如果出現錯誤,該標誌未被設置回true,這就是爲什麼RecordCount返回-1

我在我的異常構造函數中設置全局變量爲true並解決了這個問題。