日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysqli 返回一条结果_php中mysqli 处理查询结果集总结

發(fā)布時間:2024/9/19 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysqli 返回一条结果_php中mysqli 处理查询结果集总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在PHP開發(fā)中,我們經(jīng)常會與數(shù)據(jù)庫打交道。我們都知道,一般的數(shù)據(jù)處理操作流程為

接收表單數(shù)據(jù)

數(shù)據(jù)入庫

//連接數(shù)據(jù)庫

$link = mysqli_connect("my_host", "my_user", "my_password", "my_db", "my_port");

//設(shè)置字符編碼

mysqli->query("SET NAME {$conf['charset']}");

//設(shè)置時區(qū)

date_default_timezone_set('PRC');

//拼接SQL語句

$sql = "…………";

//執(zhí)行SQL語句

$res = mysqli->query($sql);

//根據(jù)執(zhí)行后返回結(jié)果判斷是否操作成功

if($res){

//數(shù)據(jù)庫操作成功后的處理

}else{

//數(shù)據(jù)庫操作成功后的處理

}

當(dāng)在上面的$sql為查詢語句時,在if($res)后,我們一般會對得到的結(jié)果集進(jìn)行一系列的操作。

最基本的就是使用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é)果集的當(dāng)前行。

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

echo "ID:".$row[$n]["id"]."用戶名:".$row[$n]["name"]."密碼:".$row[$n]["password"]."
";

$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"]."
";

}

//fetch_array方法不再有結(jié)果時返回返回NULL

//其返回結(jié)果可以是關(guān)聯(lián)數(shù)組也可以是數(shù)值數(shù)組索引,故$row["id"]、$row[1]都可以

fetch_object (以對象返回結(jié)果集的當(dāng)前行)

$sql="select * from user";

$result=$link->query($sql);

while($row=$result->fetch_object()){

echo "ID:".$row->id."用戶名:".$row->name."密碼:".$row->password."
";

}

//如果無更多的行則返回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]."
";

}

//無更多行時返回NULL

//以數(shù)值下標(biāo)調(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"]."
";

}

//無更多行時返回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."
";

}

//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."
";

}

//該方法檢索所有的列

//以對象方式返回列信息

//返回對象屬性如: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."
";

}

//該方法功能與目的fetch_field一樣

//不一樣的是該方法返回一個對象數(shù)組(如:echo $row[0]->name;輸出第一列的名字),而不是一次檢索一列

以上的循環(huán)除了while皆可替代為foreach,如:

$sql="select * from user";

$result=$link->query($sql);

$data=$result->fetch_assoc();

foreach($data as $row){

echo "ID:".$row["id"]."用戶名:".$row["name"]."密碼:".$row["password"]."
";

}

其他示例代碼皆可用foreach替代。

foreach和while兩者的不同之處在于它們背后的運作方式:

在while循環(huán)里,Perl會讀入一行輸入,把它存入某個變量并且執(zhí)行循環(huán)主體。然后,它再回頭去找其他的輸入行。

在foreach循環(huán)中,整行輸入操作符會在列表上下文中執(zhí)行(因為foreach需要逐行處理列表的內(nèi)容)。在循環(huán)開始執(zhí)行之前,它必須先將輸入全部讀進(jìn)來。

當(dāng)輸入大容量的文件時,使用foreach會占用大量的內(nèi)存。兩者的差異會十分明顯。因此,最好的做法,通常是盡量使用while循環(huán)的簡寫,讓它每次處理一行。PHP中for、foreach和while比較

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的mysqli 返回一条结果_php中mysqli 处理查询结果集总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。