標籤:
最近對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() |
返回結果集中的行數 |
參考資料:php手冊(http://php.net/manual/zh/class.mysqli-result.php)
php中mysqli 處理查詢結果集的幾個方法