2011-12-02 30 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并解决了这个问题。