[英]Converting from php mysql to mysqli mysqli_fetch_array
我正在将程序从mysql库转换为mysqli。
编辑:更多上下文
我有以下代码调用一个类
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 Purchase list基本上可以确定要从数据库检索的行,运行查询并将结果分配给$ this-> result
由于我得到了有效的结果,因此该部分显然正在工作。 然后$ templates。 '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;
}
}
如果我注释掉$ results ['OPENAMT']代码,则一切正常,如果未注释该代码,则会使浏览器请求超时。 此代码与mysql扩展而不是mysqli一起使用
任何人都可以阐明这里实际发生的一切。
$ results上的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)
}
我不完全知道您为什么会遇到此问题,但我希望这会有所帮助。
当没有更多行mysqli_fetch_arrays
时, mysql_fetch_array
返回FALSE
,而mysqli_fetch_arrays
返回NULL
。
因此$results
永远不会=== FALSE
,并且您总是会进入else
块,并且可能会在发出警告的情况下返回一些垃圾。
结果,调用get_result()
的while
循环get_result()
因为它变得false
而不是获取, 我不知道是什么 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.