2013-01-07 38 views
2

我正在將程序從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

回答

1

我不知道到底爲什麼你這個問題,但我希望這可以幫助。

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