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

标签 php sql-server freetds pdo-odbc

我们正在运行一个完全无关紧要的查询并收到以下错误:

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 连接到 SQLServer 2008

最佳答案

事实证明是前面的查询导致了问题。我们正在使用:

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

取出一行,但之后不做任何事情。这使游标保持打开状态,然后在下次执行任何查询时抛出错误。对我们来说,在下一个查询之前关闭游标是前进的方向。

$pdo_statement->closeCursor();

还值得注意的是,使用 fetchAll()(在前面的查询中)也是一种修复方法,因为这不会使游标保持打开状态。

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

关于php - 无效的游标状态 - pdo_odbc FreeTDS SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26401996/

相关文章:

sql-server - 什么是 TDS 协议(protocol)版本 8.0?为什么要使用它?

php session.use_trans_sid

php - 需要帮助将调查响应从 HTML 表单传递到 MySQL 表

sql-server - 我们可以在 Azure 上的 T-SQL 过程中创建数据库范围的凭据吗

sql - 识别 SQL Server 日期格式

python - 在 Mac 上使用 isql 和 python 连接到远程 MSSQL 2016?

php - 多次加入后在mysql中查找排名

php - 从 mysql 创建 excel 并在 php 中将其作为附件电子邮件发送

sql-server - 数据库模式到底是什么?

python - MacOS 上的 FreeTDS 配置,无需 .so 文件