我在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。