你好,欢迎访问我的博客!登录
当前位置:首页 - 教程 - 正文 君子好学,自强不息!

Medoo使用指南WHERE语法

2018-05-04 06:34:18教程admin137°c
A+ A-
文章目录
目录

Medoo的一些方法要求传递$where参数,像SQL的WHERE子句那样用于筛选查询记录。WHERE子句很强大,但有很多复杂的语法,逻辑相关性,以及有关SQL注入的潜在安全问题。但Medoo提供了强大和极端易用的方式来构造WHERE子句和预防SQL注入。

基本条件 

基本条件足够简单易懂。您可以使用其他符号来获得用于数字的高级过滤器。


$database->select("account", "user_name", [
"email" => "foo@bar.com"
]);
// WHERE email = 'foo@bar.com'
 
$database->select("account", "user_name", [
"user_id" => 200
]);
// WHERE user_id = 200
 
$database->select("account", "user_name", [
"user_id[>]" => 200
]);
// WHERE user_id > 200
 
$database->select("account", "user_name", [
"user_id[>=]" => 200
]);
// WHERE user_id >= 200
 
$database->select("account", "user_name", [
"user_id[!]" => 200
]);
// WHERE user_id != 200
 
$database->select("account", "user_name", [
"age[<>]" => [200, 500]
]);
// WHERE age BETWEEN 200 AND 500
 
// 你不仅可以使用单一的字符串或数字值,也可以使用数组
$database->select("account", "user_name", [
"OR" => [
"user_id" => [2, 123, 234, 54],
"email" => ["foo@bar.com", "cat@dog.com", "admin@medoo.in"]
]
]);
// WHERE
// user_id IN (2,123,234,54) OR
// email IN ('foo@bar.com','cat@dog.com','admin@medoo.in')
 
// 否定条件 (自Medoo 0.9起支持)
$database->select("account", "user_name", [
"AND" => [
"user_name[!]" => "foo",
"user_id[!]" => 1024,
"email[!]" => ["foo@bar.com", "cat@dog.com", "admin@medoo.in"],
"city[!]" => null
]
]);
// WHERE
// `user_name` != 'foo' AND
// `user_id` != 1024 AND
// `email` NOT IN ('foo@bar.com','cat@dog.com','admin@medoo.in') AND
// `city` IS NOT NULL
 
// 可以从 select()或get()方法的结果取得
$database->select("account", "user_name", [
"user_id" => $database->select("post", "user_id", ["comments[>]" => 40])
]);
// WHERE user_id IN (2, 51, 321, 3431)

相对条件 

相对条件可以描述数据和数据之间的复杂关系。您可以使用“and”和“or”来构建复杂的相对条件查询。


// [基本的相对条件]
$database->select("account", "user_name", [
"AND" => [
"user_id[>]" => 200,
"age[<>]" => [18, 25],
"gender" => "female"
]
]);
// WHERE user_id > 200 AND age BETWEEN 18 AND 25 AND gender = 'female'
 
$database->select("account", "user_name", [
"OR" => [
"user_id[>]" => 200,
"age[<>]" => [18, 25],
"gender" => "female"
]
]);
// WHERE user_id > 200 OR age BETWEEN 18 AND 25 OR gender = 'female'
 
// [复合的相对条件]
$database->has("account", [
"AND" => [
"OR" => [
"user_name" => "foo",
"email" => "foo@bar.com"
],
"password" => "12345"
]
]);
// WHERE (user_name = 'foo' OR email = 'foo@bar.com') AND password = '12345'

全文搜索

通过目标关键词搜索记录。


// [MATCH]
$database->select("post_table", "post_id", [
"MATCH" => [
"columns" => ["content", "title"],
"keyword" => "foo"
]
]);
// WHERE MATCH (content, title) AGAINST ('foo')
 
// [LIKE]
// The default connector of LIKE is AND
$database->select("account", "user_id", [
'LIKE' => [
'location' => "foo",
'nickname' => "foo",
'user_name' => "foo",
'description' => "foo"
]
]);
 
$database->select("account", "user_id", [
'LIKE' => [
'AND' => [
'location' => "foo",
'nickname' => "foo",
'user_name' => "foo",
'description' => "foo"
]
]
]);
// WHERE (
//location LIKE '%foo%' AND
//nickname LIKE '%foo%' AND
//user_name LIKE '%foo%' AND
//description LIKE '%foo%'
// )
 
$database->select("account", "user_id", [
'LIKE' => [
'OR' => [
'location' => "foo",
'nickname' => "foo",
'user_name' => "foo",
'description' => "foo"
]
]
]);
// WHERE (
//location LIKE '%foo%' OR
//nickname LIKE '%foo%' OR
//user_name LIKE '%foo%' OR
//description LIKE '%foo%'
// )
附加条件
$database->select("account", "user_id", [
"GROUP" => "type",
 
// "ORDER" => "age DESC"
"ORDER" => "age",
 
// Must have to use it with ORDER together
"HAVING" => [
"user_id[>]" => 500
],
 
// LIMIT => 20
"LIMIT" => [20, 100]
]);
//SELECT user_id FROM account
//GROUP BY type
//ORDER BY age
//HAVING user_id > 500
//LIMIT 20,100


  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
Medoo使用指南WHERE语法

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>


  用户登录