簡體   English   中英

從php mysql轉換為mysqli mysqli_fetch_array

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM