【发布时间】:2016-10-27 01:02:27
【问题描述】:
我正在将 PHP 应用程序从在 Windows 环境中运行转换为基于 Linux 的环境。
它利用 PDO 对 Microsoft SQL Server 数据库运行存储过程。
所以,我已经安装并配置了 PHP 5.6.22、Apache、freetds 和 pdo dblib 以方便应用程序。
大多数存储过程执行都运行良好。除了返回多个行集的那些。
当我打电话给$pdo->nextRowset() 时,我收到了这个致命错误:
SQLSTATE[HY000]: General error: PDO_DBLIB: dbresults() returned FAIL
我能找到的唯一参考是 PHP 5.6.9 中报告的一个错误,该错误已修复。
但是,我在 PHP 5.6.22 中遇到了同样的问题。
有没有人知道为什么会发生这种情况以及我该如何解决?
【问题讨论】:
-
您能否通过调整
php.ini中关于错误详细程度的设置来返回比失败更详细的错误(对不起,多年来没有接触过PHP,或者我会更具体)。如果我们可以让实际的 FreeTDS 错误浮出水面,那将更容易诊断,因为您可能会将 Windows 上的 SQL Server 驱动程序换成 Linux 上的 FreeTDS。 -
PHP 的详细程度最高,仅在我的问题中显示错误消息。
-
刚刚检查,您是否通过 fetchall 运行了该过程?
-
@Ctc 我只对每个行集使用
fetch(),因为它每个行集只返回 1 行。 -
@Jamesking56 能否请您发布执行并获取结果的代码。
标签: php sql-server pdo centos freetds