从php mysql转换为mysqli mysqli_fetch_数组

从php mysql转换为mysqli mysqli_fetch_数组,php,mysqli,Php,Mysqli,我正在把一个程序从mysql库转换成mysql。p> 编辑:更多的上下文 我有下面的代码调用一个类 case "purchasing"; $tab = 'purchasing'; require $classes . 'purchasing.php'; $purchases = new Purchase_list($search_term, $scope); require $templates . 'header.php'; require $templ

我正在把一个程序从mysql库转换成mysql。p> 编辑:更多的上下文

我有下面的代码调用一个类

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\u结果的类是Purchase\u list Purchase list基本上会计算从数据库中检索哪些行,运行查询并将结果分配给$this->result

这一部分显然是有效的,因为我有一个有效的结果。 然后是$templatespurchasing.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;
    }


}
如果我注释掉$results['OPENAMT']代码,一切都很好,如果代码没有注释,浏览器请求就会超时。 这段代码使用mysql扩展而不是mysqli

有人能解释一下这里到底发生了什么吗

在尝试返回之前,对$results进行var_转储

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)
}

我不知道你为什么会遇到这个问题,但我希望这能有所帮助

mysql\u-fetch\u-array
在没有更多行可提取时返回
FALSE
mysqli\u-fetch\u-array
返回
NULL

因此,
$results
从来都不是
==FALSE
,您总是进入
else
块,可能返回一些垃圾,并发出警告


因此,
while
循环调用
get\u result()
永远不会结束,因为它没有得到
false
而是得到了什么。

$results
看起来像什么?请发布
var\u dump($results)
并请在您的问题中发布var\u dump,而不是作为注释!您不使用mysqli\u fetch\u assoc()的原因是什么?如果您没有通过数字索引引用结果…并且它似乎有效,
[“OPENAMT”]=>float(0)
在数组中。也许问题在代码的其他地方?就像在返回后尝试访问
OPENAMT
的部分一样。啊,这很有意义。我现在觉得自己很傻,我已经读了100遍关于mysqli_fetch_数组的文档,每次都错过了。好吧,在你尝试修复后,我会很高兴知道它是否真的解决了问题。它肯定解决了问题。如果可以的话,我会投票支持你的答案!