成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

php中mysqli 處理查詢(xún)結(jié)果集總結(jié)

kyanag / 3162人閱讀

摘要:最基本的就是使用類(lèi)處理結(jié)果集,主要有以下幾種方法抓取所有的結(jié)果行并且以關(guān)聯(lián)數(shù)據(jù),數(shù)值索引數(shù)組,或者兩者皆有的方式返回結(jié)果集。以對(duì)象返回結(jié)果集中單字段的元數(shù)據(jù)。以對(duì)象數(shù)組返回代表結(jié)果集中的列信息。

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

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

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

//連接數(shù)據(jù)庫(kù)
    $link = mysqli_connect("my_host", "my_user", "my_password", "my_db", "my_port");
//設(shè)置字符編碼
    mysqli->query("SET NAME {$conf["charset"]}");
//設(shè)置時(shí)區(qū)
    date_default_timezone_set("PRC");  
//拼接SQL語(yǔ)句
    $sql = "…………";
//執(zhí)行SQL語(yǔ)句
    $res = mysqli->query($sql);
//根據(jù)執(zhí)行后返回結(jié)果判斷是否操作成功
    if($res){
        //數(shù)據(jù)庫(kù)操作成功后的處理
    }else{
        //數(shù)據(jù)庫(kù)操作成功后的處理
    }


當(dāng)在上面的$sql為查詢(xún)語(yǔ)句時(shí),在if($res)后,我們一般會(huì)對(duì)得到的結(jié)果集進(jìn)行一系列的操作。
最基本的就是使用mysqli_result類(lèi)處理結(jié)果集,主要有以下幾種方法:

fetch_all() :抓取所有的結(jié)果行并且以關(guān)聯(lián)數(shù)據(jù),數(shù)值索引數(shù)組,或者兩者皆有的方式返回結(jié)果集。

fetch_array() :以一個(gè)關(guān)聯(lián)數(shù)組,數(shù)值索引數(shù)組,或者兩者皆有的方式抓取一行結(jié)果。

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

fetch_row() :以枚舉數(shù)組方式返回一行結(jié)果

fetch_assoc(): 以一個(gè)關(guān)聯(lián)數(shù)組方式抓取一行結(jié)果。

fetch_field_direct(): 以對(duì)象返回結(jié)果集中單字段的元數(shù)據(jù)。

fetch_field() :以對(duì)象返回結(jié)果集中的列信息。

fetch_fields() :以對(duì)象數(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ù)組類(lèi)型
  $n=0;
  while($n";
   $n++;
  }

fetch_array (以一個(gè)關(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"]."用戶(hù)名:".$row[1]."密碼:".$row["password"]."
"; } //fetch_array方法不再有結(jié)果時(shí)返回返回NULL //其返回結(jié)果可以是關(guān)聯(lián)數(shù)組也可以是數(shù)值數(shù)組索引,故$row["id"]、$row[1]都可以

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

$sql="select * from user";
$result=$link->query($sql);
while($row=$result->fetch_object()){
    echo "ID:".$row->id."用戶(hù)名:".$row->name."密碼:".$row->password."
"; } //如果無(wú)更多的行則返回NULL //返回的結(jié)果是對(duì)象,要以對(duì)象的方式調(diào)用

fetch_row (以枚舉數(shù)組方式返回一行結(jié)果)

$sql="select * from user";
$result=$link->query($sql);
while($row=$result->fetch_row()){
    echo "ID:".$row[0]."用戶(hù)名:".$row[1]."密碼:".$row[2]."
"; } //無(wú)更多行時(shí)返回NULL //以數(shù)值下標(biāo)調(diào)用數(shù)組,a[0]正確、a["id"]則不正確

fetch_assoc (以一個(gè)關(guān)聯(lián)數(shù)組方式抓取一行結(jié)果)

$sql="select * from user";
$result=$link->query($sql);
while($row=$result->fetch_assoc()){
    echo "ID:".$row["id"]."用戶(hù)名:".$row["name"]."密碼:".$row["password"]."
"; } //無(wú)更多行時(shí)返回NULL //以關(guān)聯(lián)索引訪問(wèn)數(shù)組,a["id"]正確、a[0]則不正確

fetch_field_direct (以對(duì)象返回結(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ù)類(lèi)型:".$row->type."
"; } //fetch_field_direct($n)只返回單個(gè)列,所以得不斷調(diào)用該方法,沒(méi)有該列時(shí)返回false

fetch_field (以對(duì)象返回結(jié)果集中的列信息)

$sql="select * from user";
$result=$link->query($sql);
while($row=$result->fetch_field()){
    echo "列名:".$row->name."所在表:".$row->table."數(shù)據(jù)類(lèi)型:".$row->type."
"; } //該方法檢索所有的列 //以對(duì)象方式返回列信息 //返回對(duì)象屬性如:name - 列名,table - 該列所在的表名,type - 該列的類(lèi)型等

fetch_fields (以對(duì)象數(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ù)類(lèi)型:".$val->type."
"; } //該方法功能與目的fetch_field一樣 //不一樣的是該方法返回一個(gè)對(duì)象數(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"]."用戶(hù)名:".$row["name"]."密碼:".$row["password"]."
"; }

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


foreach和while兩者的不同之處在于它們背后的運(yùn)作方式:
在while循環(huán)里,Perl會(huì)讀入一行輸入,把它存入某個(gè)變量并且執(zhí)行循環(huán)主體。然后,它再回頭去找其他的輸入行。
在foreach循環(huán)中,整行輸入操作符會(huì)在列表上下文中執(zhí)行(因?yàn)閒oreach需要逐行處理列表的內(nèi)容)。在循環(huán)開(kāi)始執(zhí)行之前,它必須先將輸入全部讀進(jìn)來(lái)。
當(dāng)輸入大容量的文件時(shí),使用foreach會(huì)占用大量的內(nèi)存。兩者的差異會(huì)十分明顯。因此,最好的做法,通常是盡量使用while循環(huán)的簡(jiǎn)寫(xiě),讓它每次處理一行。PHP中for、foreach和while比較

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29417.html

相關(guān)文章

  • php操作mysql防止sql注入(合)

    摘要:參考中如何防止注入?yún)?shù)化查詢(xún)?yōu)槭裁茨軌蚍乐棺⑷肷厦嫣峁┑馁Y料比較多,下面根據(jù)自己的理解整理出來(lái)。使用的預(yù)處理參數(shù)化查詢(xún)可以有效防止注入。我們?cè)谏厦骖A(yù)處理參數(shù)化查詢(xún)是在中進(jìn)行防注入操作的,其實(shí)也內(nèi)置了一個(gè)預(yù)處理的模擬器,叫做。 由于segmentfault在處理特殊字符時(shí)也并非完美,所以下面文章中有些符號(hào)被轉(zhuǎn)換了,請(qǐng)到本人博客下載原文txt http://www.yunxi365.cn/...

    kviccn 評(píng)論0 收藏0
  • PHP操作MySQL

    摘要:操作操作的三種方式非永久連接,性能比較低,以后廢棄永久連接,減輕服務(wù)器壓力,只支持能實(shí)現(xiàn)的常用功能,支持大部分?jǐn)?shù)據(jù)庫(kù)擴(kuò)展查看函數(shù)配置文件方式連接數(shù)據(jù)庫(kù)設(shè)置的字符集連接數(shù)據(jù)庫(kù)選擇數(shù)據(jù)庫(kù)設(shè)置字符集方式執(zhí)行語(yǔ)句對(duì)之類(lèi)的操作,執(zhí)行成功時(shí)返回出錯(cuò) PHP操作MySQL PHP操作MySQL的三種方式: MySQL:非永久連接,性能比較低,PHP5.5以后廢棄; MySQLi:永久連接,...

    phodal 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<