php中mysqli 處理查詢結(jié)果集的幾個方法
Php使用mysqli_result類處理結(jié)果集有以下幾種方法
fetch_all()
抓取所有的結(jié)果行并且以關(guān)聯(lián)數(shù)據(jù)注盈,數(shù)值索引數(shù)組浑侥,或者兩者皆有的方式返回結(jié)果集。
fetch_array()
以一個關(guān)聯(lián)數(shù)組俗批,數(shù)值索引數(shù)組咧党,或者兩者皆有的方式抓取一行結(jié)果秘蛔。
fetch_object()
以對象返回結(jié)果集的當前行。
fetch_row()
以枚舉數(shù)組方式返回一行結(jié)果
fetch_assoc()
以一個關(guān)聯(lián)數(shù)組方式抓取一行結(jié)果傍衡。
fetch_field_direct()
以對象返回結(jié)果集中單字段的元數(shù)據(jù)深员。
fetch_field()
以對象返回結(jié)果集中的列信息。
fetch_fields()
以對象數(shù)組返回代表結(jié)果集中的列信息蛙埂。
fetch_all (從結(jié)果集中取得所有行作為關(guān)聯(lián)數(shù)組)
$sql="select * from user";
$result=$link->query($sql);
$row=$result->fetch_all(MYSQLI_BOTH);//參數(shù)MYSQL_ASSOC倦畅、MYSQLI_NUM、MYSQLI_BOTH規(guī)定產(chǎn)生數(shù)組類型
$n=0;
while($n<mysqli_num_rows($result)){
echo "ID:".$row[$n]["id"]."用戶名:".$row[$n]["name"]."密碼:".$row[$n]["password"]."<br />";
$n++;
}
fetch_array (以一個關(guān)聯(lián)數(shù)組绣的,數(shù)值索引數(shù)組叠赐,或者兩者皆有的方式抓取一行結(jié)果)
$sql="select * from user";
$result=$link->query($sql);
while($row=$result->fetch_array()){
echo "ID:".$row["id"]."用戶名:".$row[1]."密碼:".$row["password"]."<br />";
}
//fetch_array方法不再有結(jié)果時返回返回NULL
//其返回結(jié)果可以是關(guān)聯(lián)數(shù)組也可以是數(shù)值數(shù)組索引,故$row["id"]、$row[1]都可以
fetch_object (以對象返回結(jié)果集的當前行)
$sql="select * from user";
$result=$link->query($sql);
while($row=$result->fetch_object()){
echo "ID:".$row->id."用戶名:".$row->name."密碼:".$row->password."<br />";
}
//如果無更多的行則返回NULL
//返回的結(jié)果是對象屡江,要以對象的方式調(diào)用
fetch_row (以枚舉數(shù)組方式返回一行結(jié)果)
$sql="select * from user";
$result=$link->query($sql);
while($row=$result->fetch_row()){
echo "ID:".$row[0]."用戶名:".$row[1]."密碼:".$row[2]."<br />";
}
//無更多行時返回NULL
//以數(shù)值下標調(diào)用數(shù)組芭概,a[0]正確、a["id"]則不
fetch_assoc (以一個關(guān)聯(lián)數(shù)組方式抓取一行結(jié)果)
$sql="select * from user";
$result=$link->query($sql);
while($row=$result->fetch_assoc()){
echo "ID:".$row["id"]."用戶名:".$row["name"]."密碼:".$row["password"]."<br />";
}
//無更多行時返回NULL
//以關(guān)聯(lián)索引訪問數(shù)組惩嘉,a["id"]正確罢洲、a[0]則不
fetch_field_direct (以對象返回結(jié)果集中單字段的元數(shù)據(jù)既單列的信息)
$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."數(shù)據(jù)類型:".$row->type."<br />";
}
//fetch_field_direct($n)只返回單個列,所以得不斷調(diào)用該方法,沒有該列時返回false
fetch_field (以對象返回結(jié)果集中的列信息)
$sql="select * from user";
$result=$link->query($sql);
while($row=$result->fetch_field()){
echo "列名:".$row->name."所在表:".$row->table."數(shù)據(jù)類型:".$row->type."<br />";
}
//該方法檢索所有的列
//以對象方式返回列信息//返回對象屬性如:name - 列名文黎,table - 該列所在的表名惹苗,type - 該列的類型殿较,等
fetch_fields (以對象數(shù)組返回代表結(jié)果集中的列信息)
$sql="select * from user";
$result=$link->query($sql);
$row=$result->fetch_fields();
foreach($row as $val){
echo "列名:".$val->name."所在表:".$val->table."數(shù)據(jù)類型:".$val->type."<br />";
}
//該方法功能與目的fetch_field一樣
//不一樣的是該方法返回一個對象數(shù)組(如:echo $row[0]->name;輸出第一列的名字),而不是一次檢索一列
另:mysqli_result類還有其他方法
field_tell()
返回字段指針的位置
data_seek()
調(diào)整結(jié)果指針到結(jié)果集中的一個任意行
num_fields()
返回結(jié)果集中的字段數(shù)(列數(shù))
field_seek()
調(diào)整字段指針到特定的字段開始位置
free()
釋放與某個結(jié)果集相關(guān)的內(nèi)存
fetch_lengths()
返回結(jié)果集中當前行的列長度
num_rows()
返回結(jié)果集中的行數(shù)