从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)
}
我不知道到底为什么你这个问题,但我希望这可以帮助。
而mysql_fetch_array
返回FALSE
当没有更多的行提取时,mysqli_fetch_arrays
返回NULL
。
因此$results
从来没有=== FALSE
,你总是进入else
区块,并可能返回一些垃圾,警告被解雇。
因此,在while
循环中调用get_result()
永远不会结束,因为不但得不到false
它得到我不知道是什么。
啊,这将是非常有意义的。我现在觉得很蠢,我已经阅读了100次mysqli_fetch_arrays的文档,并且每次都错过了 – user1956035
好了,在尝试修复之后,我很乐意知道它是否真的解决了这个问题。 – gd1
它绝对解决了这个问题。如果可以的话,我会加倍努力! – user1956035
'$ results'看起来像什么? – jeroen
请发布'var_dump($ results)' –
并请将var_dump发布到**问题**中,而不是作为注释! – sachleen