PHP DOP Segmentation fault errore sul valore restituito null
-
27-09-2019 - |
Domanda
Attualmente sto usando freetds per connettersi a un server MSSql dove sto tirando un sacco di dati contabili.I dati si tira bene fino a quando non colpisce un valore null.A quel punto non ricevo nessuna PHP errori.Invece ricevo il seguente errore errore di apache log.
[avviso] bambino pid 10235 uscita segnale di errore di Segmentazione (11)
Ho fatto qualche ricerca e trovato questo questa pagina, ma non è di grande aiuto.La query che sto usando sembra qualcosa di simile a questo,
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
E sto ottenendo i dati utilizzando un ciclo while come il seguente,
while($result = $sth->fetch(PDO::FETCH_ASSOC)) {
//Deal with data here
}
Non riesco a capire se questo è un problema con il DOP, il mio livello di database, MSSQL, o la mia query.Inoltre, vorrei sottolineare che se faccio la query ed eseguire manualmente utilizzando MSSQL studio, funziona bene, e mostra i valori null in modo corretto.
Soluzione 2
Una soluzione a questo problema funziona con l'aggiunta, se le dichiarazioni NULL per tutte le colonne di ritorno in questo modo,
ISNULL(t2.ERATE, 0) as ERATE, ISNULL(t2.EEXTEND, 0) as EEXTEND, ISNULL(t2.EARNDED, '') as EARNDED
Se i valori nulli si trovano ora, sono restituiti come zeri senza errori. Non è il più bello, ma funziona.
Altri suggerimenti
Segmentation fault non sono divertenti da affrontare.La migliore risposta che posso darti è quello di continuare a posto die('okay');
chiamate in vari luoghi per vedere quanto in diversi blocchi di codifica si ottiene prima di colpire un seg fault.(Non si vedrà nulla, se c'era una seg fault).
Vale anche la pena solo cercando di aggiornare tutto alle ultime versioni:PHP, DOP, etc.