无效的游标状态-pdo_odbc FreeTDS SQL Server


Invalid cursor state - pdo_odbc FreeTDS SQL Server

我们正在运行一个完全不关心的查询,并得到以下错误:

PDOException : SQLSTATE[24000]: Invalid cursor state: 0 [FreeTDS][SQL Server]Invalid cursor state (SQLExecute[0] at /builddir/build/BUILD/php-5.5.13/ext/pdo_odbc/odbc_stmt.c:254)

从PHP,我们使用pdo_odbc库通过FreeTDS连接到SQLServer2008

发现是前面的查询造成了问题。我们使用的是:

$pdo_statement->fetch('PDO::FETCH_ASSOC);

离开一排,但在那之后什么都不做。这使得一个游标处于打开状态,然后在下次执行任何查询时抛出错误。对我们来说,在下一个查询之前关闭光标是前进的方向。

$pdo_statement->closeCursor();

同样值得注意的是,使用fetchAll()(在前面的查询中)也是一个修复方法,因为这不会打开光标。

$pdo_statement->fetchAll('PDO::FETCH_ASSOC);