在使用 PHP 連接 MySQL 數(shù)據(jù)庫(kù),進(jìn)行數(shù)據(jù)查詢時(shí),經(jīng)常會(huì)用到 mysql_fetch_array 函數(shù)。這個(gè)函數(shù)常用于從結(jié)果集中取得數(shù)據(jù),對(duì)于需要對(duì)結(jié)果集逆序輸出的需求,可以用一些方法實(shí)現(xiàn)。
$result = mysql_query("SELECT * FROM mytable ORDER BY id DESC"); while($row = mysql_fetch_array($result)){ echo $row['id'] . " - " . $row['name'] . "
"; }
上述代碼中,mysql_query 函數(shù)執(zhí)行的 SQL 語(yǔ)句中,ORDER BY id DESC 表示按照 id 字段倒序排序,這樣在使用 mysql_fetch_array 函數(shù)遍歷結(jié)果集時(shí),就可以實(shí)現(xiàn)倒序輸出。
如果需要實(shí)現(xiàn)一段代碼中多次使用 mysql_fetch_array 函數(shù)時(shí),每次都倒序輸出,可以寫成如下形式。
function fetch_array_desc($result){ $arr = array(); while($row = mysql_fetch_array($result)){ array_unshift($arr,$row); //將每一行數(shù)據(jù)插入數(shù)組頭部 } return $arr; } $result = mysql_query("SELECT * FROM mytable"); $rows = fetch_array_desc($result); foreach($rows as $row){ echo $row['id'] . " - " . $row['name'] . "
"; }
上述代碼中,自定義了一個(gè) fetch_array_desc 函數(shù),該函數(shù)返回的是一個(gè)倒序排列的關(guān)聯(lián)數(shù)組。利用該函數(shù),可以避免重復(fù)寫倒序輸出的代碼。
但是需要注意的是,mysql_fetch_array 函數(shù)在 PHP 7.0.0 版本中已經(jīng)被廢棄,取而代之的是 mysqli_fetch_array 函數(shù)。如果需要在較新的版本上使用該函數(shù),需要做兼容性處理,或者考慮使用 mysqli 或 pdo 等替代品。