Medoo Select的使用:查詢資料
select方法:有兩種傳參呼叫方式
1、單表查詢:三個引數
select($table, $columns, $where)
第一個引數型別為字串:String,即為要查詢的資料表名
第二個引數型別為字串或陣列:String/Array,即為要查詢的欄位名稱,如果只是一個欄位就寫字串:String,如果是要查詢所有是“*”的話,也是傳入字串;如果要查多個欄位,比如這個表id和name欄位,就寫陣列:array('id','name')
第三個引數型別為陣列:Array,即為查詢的Where條件,因Where的寫法相對特殊,詳細的Where使用說明移步到Medoo Where的使用:條件
第三個引數預設可不填寫,不填寫即為不加入where條件進行查詢
以下以官網示例進行完整說明(部分可能經過修改)
單表資料查詢(帶where條件):
$database = new medoo("my_database");
$datas = $database->select("account", array(
"user_name",
"email"
), array(
"user_id[>]" => 100
));
對應傳入資料表名;要顯示的欄位,這裡是多個欄位,因此傳入陣列,最後的where判斷條件也是陣列形式傳入,最終查詢返回的結果儲存在$datas內,為陣列形式
單表資料查詢(全表查詢):
$datas = $database->select("account", "*");
單表資料查詢(僅查詢一個欄位):
$datas = $database->select("account", "user_name");
單表資料查詢(欄位別名):
$data = $database->select("account", array(
"user_id",
"nickname(my_nickname)"
), array(
"LIMIT" => 20
));
欄位別名的例子中,原本欄位為nickname,後面增加括號後,nickname的別名會被變更為括號內的名字my_nickname
2、多表查詢:四個引數
select($table, $join, $columns, $where)
第一個引數型別為字串:String,即為要查詢的資料表名
第二個引數型別為陣列:Array,即為要關聯查詢的資料表與欄位名稱
第三個引數型別為字串或陣列:String/Array,即為要查詢的欄位名稱,如果只是一個欄位就寫字串:String,如果是要查詢所有是“*”的話,也是傳入字串;如果要查多個欄位,比如這個表id和name欄位,就寫陣列:array('id','name')
第四個引數型別為陣列:Array,即為查詢的Where條件,因Where的寫法相對特殊,詳細的Where使用說明移步到Medoo Where的使用:條件語句裡檢視
第四個引數預設可不填寫,不填寫即為不加入where條件進行查詢
以下以官網示例進行完整說明(部分可能經過修改)
多表資料查詢:(關聯查詢)
$database->select("post", array(
"[>]account" => array("author_id" => "user_id"),
"[>]album" => "user_id",
"[>]photo" => array("user_id", "avatar_id")
), array(
"post.post_id",
"post.title",
"account.city"
), array(
"post.user_id" => 100,
"ORDER" => "post.post_id DESC",
"LIMIT" => 50
));
從以上的多表查詢可以看出,第一個引數依然為表名,只是第二個有了變化。第二個引數為關聯資料,第三個引數為欄位,第四個為Where條件。
我們在寫多表關聯查詢中,會用到表名.欄位【table.colums】的的寫法,這裡也不意外,一樣要寫,以上多表關聯等同於以下SQL語句:
SELECT
`post`.`post_id`,
`post`.`title`,
`account`.`city`
FROM `post`
LEFT JOIN `account` ON `post`.`author_id` = `account`.`user_id`
LEFT JOIN `album` USING (`user_id`)
LEFT JOIN `photo` USING (`user_id`, `avatar_id`)
WHERE
`post`.`user_id` = 100
ORDER BY `post`.`post_id` DESC
LIMIT 50
依據單表查詢的規律,去推出關聯查詢的用法吧
補充說明關聯引數$join:(抽取以上唯一一個多表關聯的程式碼段來進行分解說明)
[>]account" => array("author_id" => "user_id"),
[>]是關聯的意思,關聯有四個,分別為:[>] 等同於 LEFT JOIN、[<] 等同於 RIGH JOIN、[<>] 等同於 FULL JOIN、[><] 等同於 INNER JOINaccount為要關聯的表,[>account]為LEFT JOIN `account`
array("author_id"=>"user_id") 陣列左邊的鍵為主表的欄位,陣列右邊的值為被關聯表的欄位,這裡這樣寫,他們的條件關係就會成為相等關係
要注意的是(已向官方傳送郵件,如果官方已修正的話,就請無視這句):官方里有段註釋的地方寫[<]為LEFT JOIN,[>]為RIGHT JOIN。實際這段寫反了,正確的說明我剛才就寫出了,[>] 等同於 LEFT JOIN、[<] 等同於 RIGH JOIN
注:[>] 等同於 LEFT JOIN、[<]
等同於 RIGH JOIN,官方已回覆郵件,官方對此處文件進行了修正