Sql server 2005 返回值为空时出现PHP PDO分段错误

Sql server 2005 返回值为空时出现PHP PDO分段错误,sql-server-2005,pdo,segmentation-fault,php-5.3,Sql Server 2005,Pdo,Segmentation Fault,Php 5.3,目前,我正在使用freetds连接到MSSql服务器,在那里我正在提取大量的会计数据。数据被很好地拉入,直到它到达一个空值。在这一点上,我没有收到任何PHP错误。相反,我在apache错误日志中得到以下错误 [注意]子pid 10235出口信号分段故障(11) 我做了一些搜索,发现了这个,但它并没有真正的帮助。我正在使用的查询如下所示 SELECT DISTINCT(t1.PEREND), t2.ERATE, t2.EEXTEND, t2.EARNDED, t1.ENTRYSEQ

目前,我正在使用freetds连接到MSSql服务器,在那里我正在提取大量的会计数据。数据被很好地拉入,直到它到达一个空值。在这一点上,我没有收到任何PHP错误。相反,我在apache错误日志中得到以下错误

[注意]子pid 10235出口信号分段故障(11)

我做了一些搜索,发现了这个,但它并没有真正的帮助。我正在使用的查询如下所示

SELECT DISTINCT(t1.PEREND), t2.ERATE, t2.EEXTEND, t2.EARNDED, t1.ENTRYSEQ
       FROM UPCHKD as t1 LEFT JOIN
            (SELECT EARNDED, PEREND, ERATE, EEXTEND, ENTRYSEQ FROM UPCHKD
                    WHERE (EARNDED LIKE '401K%'AND EARNDED NOT LIKE '401KL%') AND
                          EMPLOYEE = ? AND PEREND >= ? AND PEREND <= ?) as t2 ON t1.PEREND = t2.PEREND
       WHERE t1.PEREND >= ? AND t1.PEREND <= ? AND t1.EMPLOYEE = ? ORDER BY PEREND

我不知道这是PDO、我的数据库层、MSSQL还是我的查询的问题。另外,我想指出,如果我使用MSSQL studio手动运行查询,它运行良好,并正确显示空值。

分段错误处理起来并不有趣。我能给你的最好答案是不断地放置
die('ok')
在不同的地方调用,以查看在遇到seg故障之前,您在不同的编码块中得到的距离。(如果存在seg故障,您将什么也看不到)


还值得尝试将所有内容升级到最新版本:PHP、PDO等。

分段错误处理起来并不有趣。我能给你的最好答案是不断地放置
die('ok')
在不同的地方调用,以查看在遇到seg故障之前,您在不同的编码块中得到的距离。(如果存在seg故障,您将什么也看不到)


还值得尝试将所有内容升级到最新版本:PHP、PDO等。

解决此问题的一个方法是向所有返回列添加if null语句,如

ISNULL(t2.ERATE, 0) as ERATE, ISNULL(t2.EEXTEND, 0) as EEXTEND, ISNULL(t2.EARNDED, '') as EARNDED

如果现在找到空值,它们将作为零返回,不会出错。它不是最漂亮的,但它很有效。

这个问题的一个解决方案是向所有返回列添加if null语句,如下所示

ISNULL(t2.ERATE, 0) as ERATE, ISNULL(t2.EEXTEND, 0) as EEXTEND, ISNULL(t2.EARNDED, '') as EARNDED
如果现在找到空值,它们将作为零返回,不会出错。它不是最漂亮的,但很管用