Sql server 2005 返回值为空时出现PHP PDO分段错误
目前,我正在使用freetds连接到MSSql服务器,在那里我正在提取大量的会计数据。数据被很好地拉入,直到它到达一个空值。在这一点上,我没有收到任何PHP错误。相反,我在apache错误日志中得到以下错误 [注意]子pid 10235出口信号分段故障(11) 我做了一些搜索,发现了这个,但它并没有真正的帮助。我正在使用的查询如下所示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
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
如果现在找到空值,它们将作为零返回,不会出错。它不是最漂亮的,但很管用