php extract()超級變數函數

來源:互聯網
上載者:User

我們可以使用extract()函數,比如在接收頁面指令碼的最前面加上extract($_POST);extract($_GET);這樣的語句,匯出幾個用於表單處理的超級變數數組值,如以下代碼所示:

@extract(i_addslashes($_POST), EXTR_OVERWRITE);
@extract(i_addslashes($_GET), EXTR_OVERWRITE);
@extract(i_addslashes($_COOKIE), EXTR_OVERWRITE);
@extract(i_addslashes($_SESSION), EXTR_OVERWRITE);

我們看一個使用extract匯出為正常變數的指令碼例子

<?php
// 將$_GET和$_POST超級變數數組擷取的變數轉為正常的變數,這樣直接顯示變數名稱即可
extract($_GET);
extract($_POST);   
echo "您好, $username $age";
?>
<form action="" method="post">
姓名:<input type="text" name="username" id="username" />
年齡:<select name="age">
<option value=">16">小於16</option>
<option value="16-30" selected>16-30</option>
 
     <option value="31-50">31-50</option>
<option value="51-80">51-80</option>
</select></td>
<input type="submit" name="btn_submit" value="提交" />
</form> 

實現的介面如圖5-5所示。

 

本章介紹什麼是萬用字元、如何使用萬用字元以及怎樣使用LIKE操作符進行通配搜尋,以便對資料進行複雜過濾。

8.1  LIKE操作符

前面介紹的所有操作符都是針對已知值進行過濾的。不管是匹配一個還是多個值,測試大於還是小於已知值,或者檢查某個範圍的值,共同點是過濾中使用的值都是已知的。但是,這種過濾方法並不是任何時候都好用。例如,怎樣搜尋產品名中包含文本anvil的所有產品?用簡單的比較操作符肯定不行,必須使用萬用字元。利用萬用字元可建立比較特定資料的搜尋模式。在這個例子中,如果你想找出名稱包含anvil的所有產品,可構造一個萬用字元搜尋模式,找出產品名中任何位置出現anvil的產品。

萬用字元(wildcard) 用來匹配值的一部分的特殊字元。

搜尋模式(search pattern)   由字面值、萬用字元或兩者組合構成的搜尋條件。

萬用字元本身實際是SQL的WHERE子句中有特殊含義的字元,SQL支援幾種萬用字元。

為在搜尋子句中使用萬用字元,必須使用LIKE操作符。LIKE指示MySQL,後跟的搜尋模式利用萬用字元匹配而不是直接相等匹配進行比較。

謂詞 操作符何時不是操作符?答案是在它作為謂詞(predi- cate)時。從技術上說,LIKE是謂詞而不是操作符。雖然最終的結果是相同的,但應該對此術語有所瞭解,以免在SQL文檔中遇到此術語時不知道。

8.1.1  百分比符號(%)萬用字元

最常使用的萬用字元是百分比符號(%)。在搜尋串中,%表示任何字元出現任意次數。例如,為了找出所有以詞jet起頭的產品,可使用以下SELECT語句:

 

此例子使用了搜尋模式'jet%'。在執行這條子句時,將檢索任意以jet起頭的詞。%告訴MySQL接受jet之後的任一字元,不管它有多少字元。

區分大小寫  根據MySQL的配置方式,搜尋可以是區分大小寫。如果區分大小寫,'jet%'與JetPack 1000將不匹配。

萬用字元可在搜尋模式中任意位置使用,並且可以使用多個萬用字元。下面的例子使用兩個萬用字元,它們位於模式的兩端:

 

搜尋模式'%anvil%'表示匹配任何位置包含文本anvil的值,而不論它之前或之後出現什麼字元。

萬用字元也可以出現在搜尋模式的中間,雖然這樣做不太有用。下面的例子找出以s起頭以e結尾的所有產品:

 


重要的是要注意到,除了一個或多個字元外,%還能匹配0個字元。%代表搜尋模式中給定位置的0個、1個或多個字元。

注意尾空格  尾空格可能會干擾萬用字元匹配。例如,在儲存詞anvil時,如果它後面有一個或多個空格,則子句WHERE prod_name LIKE '%anvil'將不會匹配它們,因為在最後的l後有多餘的字元。解決這個問題的一個簡單的辦法是在搜尋模式最後附加一個%。一個更好的辦法是使用函數(第11章將會介紹)去掉首尾空格。

注意NULL  雖然似乎%萬用字元可以匹配任何東西,但有一個例外,即NULL。即使是WHERE prod_name LIKE '%'也不能匹配用值NULL作為產品名的行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.