freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

《perldbi基礎(chǔ)》word版-文庫吧

2025-08-02 04:56 本頁面


【正文】 etchrow_array,可以如下選擇并提取行:當(dāng)然,在以這種方式使用一列變量時,必須保證查詢按正確的次序選擇列。DBI 不關(guān)心SELECT 語句指定列的次序,所以正確地分配變量是您的職責(zé)。在提取行時,使用一種稱為參數(shù)約束的,也可以使列值分配給單獨的變量。fetchrow_arrayref 類似于fetchrow_array,但不返回包含當(dāng)前行的列值的數(shù)組,而是返回這個數(shù)組的引用,在沒有乘余行時,返回un d e f。如下使用:通過數(shù)組引用$ary_ref 數(shù)組元素。這類似于引用指針,所以使用了$ary_ref[$i] 而不是$ a r y [ $ i ]。要想引用整個數(shù)組,就要使用@{$ary_ref} 結(jié)構(gòu)。fetchow_arrayef 不適合在列表中提取變量。例如,下面的循環(huán)不起作用:實際上,只要fetchrow_arrayref 提取一行,這個循環(huán)就能正確地運行。但是在沒有的行時, fetchrow_arrayref 返回un d e f,并且@{undef} 不合法(它有些像在C 程序中試圖廢棄一個NULL 指針)。提取行的第三個方法fetchrow_hashref,如下使用:對fetchrow_hashref 的每個調(diào)用都返回一個按列名索引的行值散列的引用,在沒有的行時,返回un d e f。在此情況下,列值不按特定的次序出現(xiàn); Perl 散列的成員是無序的。然而,散列元素是按列名索引的,所以$hashref 提供了一個單獨的變量,可通過它按名稱任何列值。這使得能按任意需要的次序來提取值(或者它們中的任何子集),而且不必知道SELECT 查詢檢索的列的次序。例如,如果想名稱和電子郵件域,可以如下進行:如果希望將一行值傳遞給某個函數(shù)而又不需要這個函數(shù)知道SELECT 語句中指定列的次序時,fetchrow_hashref 是非常有用的。既然如此,可以調(diào)用fetchrow_hashref 來檢索行,并且編寫一個使用列名來自行散列值的函數(shù)。如果使用fetchrow_hashref,請記住下列警告:如果性能很重要,則fetchrow_hashref 并不是最好的選擇,因為它沒有fetchrow_array 或fetchrow_arrayref 的效率高。作為散列鍵值使用的列名具有與SELECT 語句中寫出時相同的字符。在MySQL中,列名不區(qū)分大小寫,所以此查詢也是這樣,不管以大寫字母還是小寫字母給出列名,查詢結(jié)果都是一樣的。但是Perl 散列索引名是區(qū)分大小寫的,這可能會帶來一些問題。為了避免潛在的大小寫不匹配問題,可通過傳遞NAME_lc 或NAME_uc 屬性,告知fetchrow_hashref 強迫列名為大寫或小寫:散列對每個唯一的列名含有一個元素。如果正在執(zhí)行從多個具有重疊名稱的表中返回列的連接,則不能所有的列值。例如,如果發(fā)布下面的查詢, fetchrow_hashref將返回只有一個元素的散列:SELECT FROM a,b WHERE =2. 確定查詢返回的行數(shù)如何知道SELECT 或類似于SELECT 的查詢返回的行數(shù)?一種方法是,當(dāng)提取它們時,計算這些行的數(shù)量。實際上,這是知道SELECT 查詢返回多少行的唯一方便的方法。使用MySQL驅(qū)動程序,可以在調(diào)用execute 后利用語句句柄調(diào)用rows 方法,但是這對其他庫引擎并不方便。而且即使就MySQL來說,如果已經(jīng)設(shè)置了mysql_use_result 屬性,rows 也不能返回正確的結(jié)果,直到提取了所有行(有關(guān)的詳細(xì)信息,請參閱附錄G)。所以只能如提取行一樣對它們進行計數(shù)。3. 提取單行的結(jié)果如果結(jié)果集只含單個行,則不需要運行循環(huán)來獲得結(jié)果。假設(shè)要編寫得出歷史同盟成員當(dāng)前數(shù)量的腳本count _ member s。完成查詢的代碼如下所示:SELECT 語句只返回一行,所以不需要循環(huán);我們只調(diào)用fetchrow_array 一次。另外,因為我們只選擇一列,所以甚至不需要將返回值分配給數(shù)組。當(dāng)在標(biāo)量環(huán)境中(單個值而不是所期望的一列)調(diào)用fetchrow_array 時,它返回這個行的第一列,如果沒有的有效行,則返回un d e f。另一種期望最多有一個記錄的查詢是一個含有LIMIT 1來約束返回的行數(shù)的查詢。其一般的用法是返回特定列含有最大或最小值的行。例如,下面的查詢給出最近出生的總統(tǒng)姓名和出生日期:必須無提取循環(huán)的其他類型的查詢利用MAX 或MIN 來選擇單個值。但是在所有這些情況下,獲得單個行結(jié)果的一種更容易的方法就是使用庫句柄方法selectrow_array,它結(jié)合了prepare、execute 并在單個調(diào)用中提取行。它返回一個數(shù)組(而不是一個引用),如果出現(xiàn)錯誤,則返回一個空數(shù)組。前一例子可利用selectrow_array 編寫4. 處理完整的結(jié)果集在使用提取循環(huán)時, DBI 不提供在結(jié)果集中隨意查找的方法,或以任何次序而不是以循環(huán)返回的次序來處理行。同樣,提取行以后,如果沒有保存,前一行會丟失。這種做法并不一定合適以下情況:以非連續(xù)的次序處理行。考慮一種情況,想以歷史同盟的president 表中列出的美國總統(tǒng)為主體,進行一些測驗。如果希望每次測驗時都以不同的次序提出問題,則可以從president 表中選擇所有行。然后,可能以任意的次序提取行來改變與所問問題有關(guān)的總統(tǒng)的次序。要想任意地提取一行,就必須同時所有的行。只使用返回行的子集,對其進行隨機選擇。例如,當(dāng)問及總統(tǒng)出生地時,要想出現(xiàn)多個選擇的問題,則可以隨便地提取一行來選擇總統(tǒng)(正確的答案),然后再從取來干擾的選擇中提取若干其他行。即使確實以連續(xù)的次序去處理,也想緊緊抓住整個結(jié)果集。如果想經(jīng)過這些行進行多個傳遞,這可能是必需的。例如,在統(tǒng)計計算中,可能先瀏覽一遍結(jié)果集,來估計的一些通用數(shù)字屬性,然后再次檢查這些行,來實現(xiàn)更加明確的分析??梢杂脦讉€不同的方式作為一個整體結(jié)果集??梢酝瓿蛇@個常見的提取循環(huán),并在提取它時保存每一行,可以使用一次返回整個結(jié)果集的方法。無論哪種方法都以在結(jié)果集中包括一行一行的矩陣作為結(jié)束,和選擇的列一樣多??梢砸匀魏未涡蛉我舛啻蔚靥幚砭仃嚨脑亍O旅娴挠懻撜f明這兩種方法。使用提取循環(huán)來捕獲結(jié)果集的一種方法是使用fetchrow_array 并保存對這些行引用的數(shù)組。除了保存所有的行,然后顯示矩陣舉例說明了如何確定矩陣中的行數(shù)和列數(shù),及如何矩陣的個別成員以外,下面的代碼和dump_members 中提取和顯示的循環(huán)作用是一樣的。在確定矩陣的維數(shù)時,必須首先確定行數(shù),因為無論這個矩陣是否為空,都可能計算列數(shù)。如果$rows 為0,則這個矩陣為空,并且$cols 也為0。否則,列數(shù)可能作為行數(shù)組中的元素數(shù)量來計算,用語法@{$matrix[$i]} 來整體行
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1