2010年5月29日 星期六

PHP筆記(3)

這篇提到
1.SQL碼整理
2.拆解字串函式 explode() 與結合字串函式 implode()
3.字元替換函str_replace()
4.擷取字元函式 substr() 
5.自訂函式寫法 

1.SQL碼整理
    $query = "SELECT mr.response_id, mr.topic_id, mr.response, mt.name AS topic_name " .
      "FROM mismatch_response AS mr " .
      "INNER JOIN mismatch_topic AS mt USING (topic_id) " .
      "WHERE mr.user_id = '" . $_SESSION['user_id'] . "'";

SQL的AS關鍵字建立別名,如例子中的mismatch_topic被命名為mt
INNER JOIN是內聯結的陳述,會從FROM與JOIN提到的表作查詢
只有符合條件的查詢才回被回傳
USING是簡化SQL碼的陳述
例子中可改成ON( mismatch_topic.topic_id = mismatch_response.topic_id)
兩張表裡都有相同的欄位名稱才可以這樣使用

  SELECT xx FROM table WHERE xx LIKE '%world%'

Like的關鍵字可以尋找跟引號裡的字眼不完全相同的模糊比對
萬用字元%可以替代單字前後的任何字元
MySQL預設的搜尋是不分大小
所以可以找到 HelloWorld、 hello world 、wOrld這些資料

SELECT xx FROM table WHERE xx LIKE '____world%'
搜尋到的資料就必須是任意四字元後接world的資料,例如aaaaworldd
前面的字元數端視 _ 符號的數量

SELECT * FROM table ORDER BY title  LIMIT 5
ORDER BY這個關鍵詞用在句尾,可以針對查詢做排列
針對title作降冪排列
當然排列的依據是數值或字元的大小順位
LIMIT 5 讓不管查詢到多少資料都只回傳前五筆
如果是 LIMIT 10, 5
第一個引數是要跳過多少筆資料,第二個引數是要擷取多少資料
善用的話可以做出將查詢結果分頁的效果

搭配PHP函式使用時有一些地方要注意
使用mysqli_query()時,若查詢的變數型別並不符合該欄位的型別
會回傳一個false值
而若查詢到的是空值(null)
則必須要進一步使用mysqli_fetch_array()函式
這函式會在查詢到空值時回傳false

2.拆解字串函式 explode() 與結合字串函式 implode()

explode()使用範例
$sarray = explode(' ', 'Tyler Clippard is awsome !');
第二個參數是想分解的字串,依照第一個參數代表的分隔符號來分割
之後在將分割後的字串重送到字串陣列裡面
$sarray[0] = Tyler

implode()使用範例
$clause = implode(' ', $sarray);
第二個參數是要結合的字串陣列,第一個參數是分隔符號

3.字元替換函式str_replace()
使用範例
$replace_string = str_replace('thousands', 'hundreds', 'It worths two thousands ');
第一個參數是要被替換的字元,第二個參數是取代前者的自元,第三個參數是是目標字串

4.擷取字元函式 substr()

使用範例
substr('Yes, we can !', 5, 2)
上式可取得字串 - we
第一個參數是原始字串,第二個參數是擷取位置
字元在原始字串中被給予從0開始的編號,在5這個位置上的字元就是w
第三個參數是截取的字元數
如果在第二個參數輸入負數表是從字串尾巴開始取字元
第三個參數假如不輸入則代表要擷取剩下所有的字元
假如要取得的字元數比剩下字元數還多也是如此,不會在字串尾補上空值

假如要做出常見的"繼續閱讀"之類的功能可以考慮用這個做

5.自訂函式寫法

  function funcname($param){
  ...........
  return $var;
}

寫自訂函式時的寫法很寬鬆,宣告不用宣告函式回傳型態
缺點是若有疏忽會比較難以察覺

沒有留言:

張貼留言