Ошибка ошибки сегментации PHP PDO на нулевое возвращаемое значение

StackOverflow https://stackoverflow.com/questions/4247554

Вопрос

В настоящее время я использую 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

И я получаю данные, используя цикл while, как следующее,

while($result = $sth->fetch(PDO::FETCH_ASSOC)) {
    //Deal with data here
}

Я не могу сказать, является ли это проблемой с PDO, моим слоем базы данных, MSSQL или My Query. Кроме того, я хотел бы отметить, что если я возьму запрос и запустите его вручную, используя MSSQL Studio, он работает нормально и точно показывает нулевые значения.

Это было полезно?

Решение 2

Одно решение этого вопроса работает, добавив, если нулевые операторы для всех возвратных столбцов вроде так,

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

Если нуль найден сейчас, они возвращаются как Zeros без ошибок. Это не самая красивая, но это работает.

Другие советы

Неисправности сегментации не весело иметь дело с. Лучший ответ, который я могу дать вам, это постоянно поместить die('okay'); Звонки в разных местах, чтобы увидеть, как далеко в разных блоках кодирования вы получаете, прежде чем ударить ошибку SEG. (Вы ничего не увидите, если бы была ошибка SEG).

Также стоит просто попытаться просто обновить все до последних версий: PHP, PDO и т. Д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top