php中mysqli處理查詢結果集的幾個方法

科技探索者發表於2017-11-08

php中mysqli 處理查詢結果集的幾個方法

 來源於:http://www.cnblogs.com/lucky-pin/p/4855145.html

  最近對php查詢mysql處理結果集的幾個方法不太明白的地方查閱了資料,在此整理記下

Php使用mysqli_result類處理結果集有以下幾種方法

fetch_all() 抓取所有的結果行並且以關聯資料,數值索引陣列,或者兩者皆有的方式返回結果集。
fetch_array() 以一個關聯陣列,數值索引陣列,或者兩者皆有的方式抓取一行結果。
fetch_object() 以物件返回結果集的當前行。
fetch_row() 以列舉陣列方式返回一行結果
fetch_assoc() 以一個關聯陣列方式抓取一行結果。
fetch_field_direct() 以物件返回結果集中單欄位的後設資料。
fetch_field() 以物件返回結果集中的列資訊
fetch_fields() 以物件陣列返回代表結果集中的列資訊


fetch_all (從結果集中取得所有行作為關聯陣列)

  $sql="select * from user";  $result=$link->query($sql);  $row=$result->fetch_all(MYSQLI_BOTH);//引數MYSQL_ASSOC、MYSQLI_NUM、MYSQLI_BOTH規定產生陣列型別
  $n=0;  while($n<mysqli_num_rows($result)){   echo "ID:".$row[$n]["id"]."使用者名稱:".$row[$n]["name"]."密碼:".$row[$n]["password"]."<br />";   $n++;
  }

 

 fetch_array (以一個關聯陣列,數值索引陣列,或者兩者皆有的方式抓取一行結果)

        $sql="select * from user";        $result=$link->query($sql);        while($row=$result->fetch_array()){            echo "ID:".$row["id"]."使用者名稱:".$row[1]."密碼:".$row["password"]."<br />";
        }//fetch_array方法不再有結果時返回返回NULL
//其返回結果可以是關聯陣列也可以是數值陣列索引,故$row["id"]、$row[1]都可以

 

fetch_object (以物件返回結果集的當前行)

        $sql="select * from user";
        $result=$link->query($sql);        while($row=$result->fetch_object()){
            echo "ID:".$row->id."使用者名稱:".$row->name."密碼:".$row->password."<br />";
        }//如果無更多的行則返回NULL//返回的結果是物件,要以物件的方式呼叫

 

fetch_row (以列舉陣列方式返回一行結果)

        $sql="select * from user";        $result=$link->query($sql);        while($row=$result->fetch_row()){            echo "ID:".$row[0]."使用者名稱:".$row[1]."密碼:".$row[2]."<br />";
        }//無更多行時返回NULL
//以數值下標呼叫陣列,a[0]正確、a["id"]則不

 

fetch_assoc (以一個關聯陣列方式抓取一行結果)

        $sql="select * from user";        $result=$link->query($sql);        while($row=$result->fetch_assoc()){            echo "ID:".$row["id"]."使用者名稱:".$row["name"]."密碼:".$row["password"]."<br />";
        }//無更多行時返回NULL
//以關聯索引訪問陣列,a["id"]正確、a[0]則不

 

fetch_field_direct (以物件返回結果集中單欄位的後設資料既單列的資訊)

        $sql="select * from user";        $result=$link->query($sql);        $n=0;        while(1){            if(!$row=$result->fetch_field_direct($n++)) break;            echo "列名:".$row->name."所在表:".$row->table."資料型別:".$row->type."<br />";
        }//fetch_field_direct($n)只返回單個列,所以得不斷呼叫該方法,沒有該列時返回false

 

fetch_field (以物件返回結果集中的列資訊)

        $sql="select * from user";        $result=$link->query($sql);        while($row=$result->fetch_field()){            echo "列名:".$row->name."所在表:".$row->table."資料型別:".$row->type."<br />";
        }//該方法檢索所有的列
//以物件方式返回列資訊
//返回物件屬性如:name - 列名,table - 該列所在的表名,type - 該列的型別,等

 

fetch_fields (以物件陣列返回代表結果集中的列資訊)

 

        $sql="select * from user";        $result=$link->query($sql);        $row=$result->fetch_fields();        foreach($row as $val){            echo "列名:".$val->name."所在表:".$val->table."資料型別:".$val->type."<br />";
        }//該方法功能與目的fetch_field一樣
//不一樣的是該方法返回一個物件陣列(如:echo $row[0]->name;輸出第一列的名字),而不是一次檢索一列

另:mysqli_result類還有其他方法

field_tell() 返回欄位指標的位置
data_seek() 調整結果指標到結果集中的一個任意行
num_fields() 返回結果集中的欄位數(列數)
field_seek() 調整欄位指標到特定的欄位開始位置
free()  釋放與某個結果集相關的記憶體
fetch_lengths() 返回結果集中當前行的列長度
num_rows() 返回結果集中的行數

本文轉自孤舟夜航之家部落格51CTO部落格,原文連結http://blog.51cto.com/cysky/1701276如需轉載請自行聯絡原作者


cysky


相關文章