mysqli_fetch_all

許多狀況下,都須要將mysql的查詢結果轉成一個數組,這個就能夠遍歷數組來顯示,查詢結果。在個人開發環境裏,我使用mysqli_fetch_all函數,使用方法以下mysql

$result = mysqli_query($con, $sql);
$posts =  mysqli_fetch_all($result, MYSQLI_ASSOC);

加上MYSQLI_ASSOC是爲了使返回的是關聯數組,以後就能夠遍歷$posts數組。當將這段代碼放到線上環境時,發現沒有結果,最後才知道原來是mysqli_fetch_all函數沒法使用。 google以後才知道,mysqli_fetch_all這個函數只存在於mysqlnd中,也就是PHP的原生MySQL驅動中。原來連接MySQL存在兩套驅動,一套是libmysql,一套是mysqlnd。原本mysqlnd是不存在的,後來由於mysql到了Oracle手上以後,驅動的認證就有些問題了,因而PHP開發組本身開發了一套mysql驅動。linux

但是在linux下,安裝mysqli時仍是默認使用libmysql,因此要麼就得從新安裝mysqli模塊,使用mysqlnd驅動安裝,或者本身來實現mysqli_fetch_all的功能。暫時先本身實現相似的功能。sql

$result = mysqli_query($con, $sql);
$posts = array();
while($row = mysqli_fetch_array($result)) {
    $posts[] = $row;
}
相關文章
相關標籤/搜索