PDOStatement::nextRowset() 不与 dblib 和 MSSQL 一起使用


PDOStatement::nextRowset() not working with dblib and MSSQL

问题

我最近将我的 Web 应用程序从 Windows Server 迁移到 Linux 服务器,在这样做的过程中,我不得不进行很多更改......其中之一是我与MSSQL服务器通信的方式。

我正在使用 Windows PDO_SQLSRV 驱动程序与数据库对话,但现在将 dblib 驱动程序与 Freetds 等一起使用。 除了多个记录集和PDOStatement::nextRowset()之外,一切都可以正常工作。当我尝试执行此函数时,我得到:

PDOStatement::nextRowset((: SQLSTATE[IM001]:驱动程序不支持此功能:驱动程序不支持/somefile/中的多个行集

我试过什么

我已经在Google上搜索了此错误,虽然我能够找到潜在的解决方案(可以追溯到2006年(,但似乎这些解决方案都不可用。

我看了这个,但无法实施解决方案,因为它没有说它在哪里。

我的问题

如果还不清楚,我需要一种方法通过 Linux 上的 PHP 从 MSSQL 数据库返回多个记录集,而不会收到我当前收到的错误......这可能吗?

阅读此线程

它似乎在开发人员待办事项列表中:

这是可行的。本机 mssql/dblib 扩展确实支持这一点 特征。我只是没有时间为pdo_dblib编码。

弗兰克

如果你考虑用原生库编写部分脚本,[查看这里][2]


编辑:

事实证明,我链接到的thread是旧的,从那时起该错误已得到修复。

解决方案是将PHP升级到较新的版本。

事实证明,此问题已在后来的 PHP 版本中修复。我不知道确切的是哪个版本,但我现在使用的是 PHP 版本 5.5.18,nextRowset()它正在正常工作。