我们正在运行一个完全不关心的查询,并得到以下错误:
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);