odbc_fetch_array() php中出现分段错误(core dump)错误


Segmentation Fault (core dumped) error in odbc_fetch_array() php

我在odbc_fetch_array中收到Segmentation Fault(core dumped)错误。虽然我通过在全局启动的$resultSet变量中执行(odbc_exec) MSSQL查询有1500个结果,但我正试图获取每一行并将其存储到使用while循环中的odbc_fetch_array的数组中。当我尝试运行脚本时,从1500行开始,前7行已被获取并存储在数组中。但在此之后,Segmentation Fault(core dumped)错误出现并停止了抓取过程。

下面是我使用的代码:
$i=1;
$display_data = array();
while($data = odbc_fetch_array($this->ressultSet))
{
    $display_data[$i] = $data ;
    $i++;
}

有谁能帮上忙吗?

谢谢!

您可以在https://bugs.php.net/bug.php?id=61387&edit=1找到此错误。

我已经将问题隔离到odbc_fetch_array(),结果集包含具有NULL值的匿名(未命名)列。如果NULL值被别名("SELECT NULL as SOMETHING")没有崩溃。如果一个匿名者(未命名)

测试脚本:

$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。