为什么$ rs-> RowCount没有返回值?

时间:2011-12-02 14:18:16

标签: php sql-server-2008 ado

我使用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();
}

我知道这张桌子有价值......我错过了什么?

2 个答案:

答案 0 :(得分:2)

手册说明原因。 http://phplens.com/lens/adodb/docs-adodb.htm#recordcount

好像你已经设置了

  

$ ADODB_COUNTRECS = false

答案 1 :(得分:0)

我使用Adodb和PHP有一个类似的问题,带有PDO mssql驱动程序。

  • 我在try / catch块中使用GetOneLimitQuery执行了SQL查询
  • 查询导致错误
  • 我发现了异常并继续使用Execute
  • 执行有效查询
  • RecordCount的调用将错误地返回-1(但我可以迭代行)。

我发现一些Adodb函数在执行查询之前将$ADODB_COUNTRECS标记为false。如果出现错误,则该标记未设置回true,这就是RecordCount返回-1的原因。

我在我的异常构造函数中将全局变量设置为true,这解决了问题。