摘要:最基本的就是使用類處理結果集,主要有以下幾種方法抓取所有的結果行并且以關聯(lián)數(shù)據,數(shù)值索引數(shù)組,或者兩者皆有的方式返回結果集。以對象返回結果集中單字段的元數(shù)據。以對象數(shù)組返回代表結果集中的列信息。
在PHP開發(fā)中,我們經常會與數(shù)據庫打交道。我們都知道,一般的數(shù)據處理操作流程為
接收表單數(shù)據
數(shù)據入庫
//連接數(shù)據庫 $link = mysqli_connect("my_host", "my_user", "my_password", "my_db", "my_port"); //設置字符編碼 mysqli->query("SET NAME {$conf["charset"]}"); //設置時區(qū) date_default_timezone_set("PRC"); //拼接SQL語句 $sql = "…………"; //執(zhí)行SQL語句 $res = mysqli->query($sql); //根據執(zhí)行后返回結果判斷是否操作成功 if($res){ //數(shù)據庫操作成功后的處理 }else{ //數(shù)據庫操作成功后的處理 }
當在上面的$sql為查詢語句時,在if($res)后,我們一般會對得到的結果集進行一系列的操作。
最基本的就是使用mysqli_result類處理結果集,主要有以下幾種方法:
fetch_all() :抓取所有的結果行并且以關聯(lián)數(shù)據,數(shù)值索引數(shù)組,或者兩者皆有的方式返回結果集。
fetch_array() :以一個關聯(lián)數(shù)組,數(shù)值索引數(shù)組,或者兩者皆有的方式抓取一行結果。
fetch_object() :以對象返回結果集的當前行。
fetch_row() :以枚舉數(shù)組方式返回一行結果
fetch_assoc(): 以一個關聯(lián)數(shù)組方式抓取一行結果。
fetch_field_direct(): 以對象返回結果集中單字段的元數(shù)據。
fetch_field() :以對象返回結果集中的列信息。
fetch_fields() :以對象數(shù)組返回代表結果集中的列信息。
fetch_all (從結果集中取得所有行作為關聯(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ī)定產生數(shù)組類型 $n=0; while($n"; $n++; }
fetch_array (以一個關聯(lián)數(shù)組,數(shù)值索引數(shù)組,或者兩者皆有的方式抓取一行結果)
$sql="select * from user"; $result=$link->query($sql); while($row=$result->fetch_array()){ echo "ID:".$row["id"]."用戶名:".$row[1]."密碼:".$row["password"]."
"; } //fetch_array方法不再有結果時返回返回NULL //其返回結果可以是關聯(lián)數(shù)組也可以是數(shù)值數(shù)組索引,故$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."
"; } //如果無更多的行則返回NULL //返回的結果是對象,要以對象的方式調用
fetch_row (以枚舉數(shù)組方式返回一行結果)
$sql="select * from user"; $result=$link->query($sql); while($row=$result->fetch_row()){ echo "ID:".$row[0]."用戶名:".$row[1]."密碼:".$row[2]."
"; } //無更多行時返回NULL //以數(shù)值下標調用數(shù)組,a[0]正確、a["id"]則不正確
fetch_assoc (以一個關聯(lián)數(shù)組方式抓取一行結果)
$sql="select * from user"; $result=$link->query($sql); while($row=$result->fetch_assoc()){ echo "ID:".$row["id"]."用戶名:".$row["name"]."密碼:".$row["password"]."
"; } //無更多行時返回NULL //以關聯(lián)索引訪問數(shù)組,a["id"]正確、a[0]則不正確
fetch_field_direct (以對象返回結果集中單字段的元數(shù)據既單列的信息)
$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ù)據類型:".$row->type."
"; } //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."數(shù)據類型:".$row->type."
"; } //該方法檢索所有的列 //以對象方式返回列信息 //返回對象屬性如:name - 列名,table - 該列所在的表名,type - 該列的類型等
fetch_fields (以對象數(shù)組返回代表結果集中的列信息)
$sql="select * from user"; $result=$link->query($sql); $row=$result->fetch_fields(); foreach($row as $val){ echo "列名:".$val->name."所在表:".$val->table."數(shù)據類型:".$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需要逐行處理列表的內容)。在循環(huán)開始執(zhí)行之前,它必須先將輸入全部讀進來。
當輸入大容量的文件時,使用foreach會占用大量的內存。兩者的差異會十分明顯。因此,最好的做法,通常是盡量使用while循環(huán)的簡寫,讓它每次處理一行。PHP中for、foreach和while比較
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/29417.html
摘要:參考中如何防止注入參數(shù)化查詢?yōu)槭裁茨軌蚍乐棺⑷肷厦嫣峁┑馁Y料比較多,下面根據自己的理解整理出來。使用的預處理參數(shù)化查詢可以有效防止注入。我們在上面預處理參數(shù)化查詢是在中進行防注入操作的,其實也內置了一個預處理的模擬器,叫做。 由于segmentfault在處理特殊字符時也并非完美,所以下面文章中有些符號被轉換了,請到本人博客下載原文txt http://www.yunxi365.cn/...
摘要:操作操作的三種方式非永久連接,性能比較低,以后廢棄永久連接,減輕服務器壓力,只支持能實現(xiàn)的常用功能,支持大部分數(shù)據庫擴展查看函數(shù)配置文件方式連接數(shù)據庫設置的字符集連接數(shù)據庫選擇數(shù)據庫設置字符集方式執(zhí)行語句對之類的操作,執(zhí)行成功時返回出錯 PHP操作MySQL PHP操作MySQL的三種方式: MySQL:非永久連接,性能比較低,PHP5.5以后廢棄; MySQLi:永久連接,...
閱讀 2720·2021-11-25 09:43
閱讀 750·2021-11-12 10:36
閱讀 5064·2021-11-08 13:18
閱讀 2265·2021-09-06 15:00
閱讀 3235·2019-08-30 15:56
閱讀 1010·2019-08-30 13:57
閱讀 2049·2019-08-30 13:48
閱讀 1477·2019-08-30 11:13