从php mysql转换为mysqli mysqli_fetch_array

问题描述:

我正在将程序从mysql库转换为mysqli。从php mysql转换为mysqli mysqli_fetch_array

编辑:一些更多的上下文

我有下面的代码调用类

case "purchasing"; 
    $tab = 'purchasing'; 
    require $classes . 'purchasing.php'; 
    $purchases = new Purchase_list($search_term, $scope); 
    require $templates . 'header.php'; 
    require $templates . 'purchasing.php'; 
    break; 

包含以下get_result是Purchase_list 采购清单基本上计算出从数据库中检索哪些行类,运行查询并将结果赋值给$ this-> result

由于我有一个有效的结果,这部分显然是有效的。 然后$模板。 'purchasing.php';显示这些结果。

常见故障处理的目的purchasing.php只包含

while ($row = $purchases->get_result()) { 

} 

我有一个类,看起来像这样

function get_result() { 

    $results = mysqli_fetch_array($this->result);   
    if($results === FALSE) { 
     return false; 
    }else { 
     $results['OPENAMT'] = ($results['Puramt'] - $results['Recamt']); 

     return $results; 
    } 


} 

里面的函数,如果我注释掉的$结果[“OPENAMT” ]代码一切都很好,代码没有评论它超出浏览器请求的时间。 此代码与mysql扩展而不是mysqli一起工作

任何人都可以对这里实际发生的事情有所了解。

试图返回之前在$结果的var_dump给

array(11) { 
    [0]=> string(5) "23074" 
    ["Purno"]=> string(5) "23074" 
    [1]=> string(3) "AEC" 
    ["Vendno"]=> string(3) "AEC" 
    [2]=> string(10) "11/28/2012" 
    ["Purdate"]=> string(10) "11/28/2012" 
    [3]=> string(4) "0.00" 
    ["Puramt"]=> string(4) "0.00" 
    [4]=> string(4) "0.00" 
    ["Recamt"]=> string(4) "0.00" 
    ["OPENAMT"]=> float(0) 
} 
+0

'$ results'看起来像什么? – jeroen

+0

请发布'var_dump($ results)' –

+0

并请将var_dump发布到**问题**中,而不是作为注释! – sachleen

我不知道到底为什么你这个问题,但我希望这可以帮助。

mysql_fetch_array返回FALSE当没有更多的行提取时,mysqli_fetch_arrays返回NULL

因此$results从来没有=== FALSE,你总是进入else区块,并可能返回一些垃圾,警告被解雇。

因此,在while循环中调用get_result()永远不会结束,因为不但得不到false它得到我不知道是什么

+0

啊,这将是非常有意义的。我现在觉得很蠢,我已经阅读了100次mysqli_fetch_arrays的文档,并且每次都错过了 – user1956035

+0

好了,在尝试修复之后,我很乐意知道它是否真的解决了这个问题。 – gd1

+0

它绝对解决了这个问题。如果可以的话,我会加倍努力! – user1956035