2016-11-04 3 views
0

Я принимаю Segmentation Fault(core dumped) Ошибка в odbc_fetch_array. Хотя у меня есть 1500 результатов, выполнив (odbc_exec) запрос MSSQL в переменной $resultSet, инициированной глобально, я пытаюсь извлечь каждую строку и сохранить ее в массиве с использованием odbc_fetch_array в цикле while. Когда я попытался запустить скрипт, из 1500 строк первые 7 строк были извлечены и сохранены в массиве. Но после этого возникает ошибка Segmentation Fault(core dumped) и прекращается процесс выборки.Ошибка сегментации (core dumped) в odbc_fetch_array() php

Вот код, я использую:

$i=1; 
$display_data = array(); 

while($data = odbc_fetch_array($this->ressultSet)) 
{ 
    $display_data[$i] = $data ; 
    $i++; 
} 
Can

кто-нибудь помочь в этом вопросе?

Спасибо!

ответ

1

вы можете найти эту ошибку на https://bugs.php.net/bug.php?id=61387&edit=1.

Я выделил проблему для odbc_fetch_array() для наборов результатов, содержащих анонимный (безымянный) столбец со значением NULL. Если значение NULL имеет псевдоним («SELECT NULL as SOMETHING»), то нет сбоя. Если анонимный (неназванный) столбец содержит что-либо иное, кроме NULL, нет сбоя.

Test Script:

$sql = 'SELECT NULL'; 

$c = odbc_connect('Driver=SQL Server Native Client 
11.0;server=hpesc1;uid=xxx;pwd=xxx;Database=xxx','',''); 

$e = odbc_exec($c, $sql); 

$row = odbc_fetch_array($e); 

Вот различные комбинации SQL, которые будут или не будут врезаться PHP:

$sql = 'SELECT NULL'; // PHP SEGFAULT 

$sql = 'SELECT NULL as [one]'; // OK 

$sql = 'SELECT 1'; // OK 

$sql = 'SELECT 1, NULL'; // SEGFAULT 

$sql = 'SELECT 1, NULL as [two]'; // OK 

я решил сделать что-то вроде этого в моем запросе:

SELECT * FROM foo ORDER BY id ASC 

Надеюсь, это поможет,

Marco.

Смежные вопросы