WHERE 语句

SQL中使用where可能会有一些不安全的动态参数传入或者一些复杂的SQL语句,但是Medoo提供非常简介和安全的方法来实现这些.

基础使用

在基础使用中. 你可以使用一些符号对参数进行过滤$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", [ "age[> [200, 500]]);// WHERE age NOT BETWEEN 200 AND 500// [>] 可以用于 datetime$database->select("account", "user_name", [ "birthday[> [date("Y-m-d", mktime(0, 0, 0, 1, 1, 2015)), date("Y-m-d")]]);//WHERE `birthday` BETWEEN '2015-01-01' AND '2017-01-16' (now)// 你不仅可以使用字符串和数字,还可以使用数组$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')// 多条件查询$database->select("account", "user_name", [ "AND" => [ "user_name[!]" => "foo", "user_id[!]" => 1024, "email[!]" => ["foo@bar.com", "cat@dog.com", "admin@medoo.in"], "city[!]" => null, "promoted[!]" => true ]]);// 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// `promoted` != 1// 或者嵌套 select() ak 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" 来拼接非常复杂的SQL语句// 基础使用$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'// 注意// 因为medoo使用的是数组传参,所以下面这种用法是错误的。$database->select("account", '*', [ "AND" => [ "OR" => [ "user_name" => "foo", "email" => "foo@bar.com" ], "OR" => [ "user_name" => "bar", "email" => "bar@foo.com" ] ]]);// [X] SELECT * FROM "account" WHERE ("user_name" = 'bar' OR "email" = 'bar@foo.com')// 正确的方式是使用如下方式定义复合条件$database->select("account", '*', [ "AND" => [ //实际应用时这儿可以使用AND或者OR "OR" => [ //第一个条件 "user_name" => "foo", "email" => "foo@bar.com" ], "OR" => [ //第二个条件 "user_name" => "bar", "email" => "bar@foo.com" ] ]]);// SELECT * FROM "account"// WHERE (// (// "user_name" = 'foo' OR "email" = 'foo@bar.com'// )// AND// (// "user_name" = 'bar' OR "email" = 'bar@foo.com'// )// )

模糊匹配 like

LIKE 使用语法 [~] .// 默认情况下,使用%在前后包含关键词$database->select("person", "id", [ "city[~]" => "lon"]);WHERE "city" LIKE '%lon%'// 数组形式,查询多个关键词$database->select("person", "id", [ "city[~]" => ["lon", "foo", "bar"]]);WHERE "city" LIKE '%lon%' OR "city" LIKE '%foo%' OR "city" LIKE '%bar%'// 不包含 [!~]$database->select("person", "id", [ "city[!~]" => "lon"]);WHERE "city" NOT LIKE '%lon%'// 使用SQL自带的一些通配符// 你可以使用sql自带的一些通配符来完成较复杂的查询$database->select("person", "id", [ "city[~]" => "stan%" // Kazakhstan, Uzbekistan, Türkmenistan]);$database->select("person", "id", [ "city[~]" => "Londo_" // London, Londox, Londos...]);$database->select("person", "id", [ "name[~]" => "[BCR]at" // Bat, Cat, Rat]);$database->select("person", "id", [ "name[~]" => "[!BCR]at" // Eat, Fat, Hat...]);

排序使用$database->select("account", "user_id", [ // Single condition"ORDER" => "user_id", // Multiple condition"ORDER" => [// Order by column with sorting by customized order."user_id" => [43, 12, 57, 98, 144, 1], // Order by column"register_date", // Order by column with descending sorting"profile_id" => "DESC", // Order by column with ascending sorting"date" => "ASC"]]);

全文检索// [MATCH]$database->select("post_table", "post_id", [ "MATCH" => [ "columns" => ["content", "title"], "keyword" => "foo" ]]);// WHERE MATCH (content, title) AGAINST ('foo')

使用SQL函数

在一些特殊的情况下,你可能需要使用SQL系统函数,只需要字段名前加上#号即可$data = $database->select('account', [ 'user_id', 'user_name'], [ '#datetime' => 'NOW()']);// SELECT "user_id","user_name"// FROM "account"// WHERE "datetime" = NOW()// [IMPORTANT] Keep in mind that, the value will not be quoted should be matched as XXX() uppercase.// The following sample will be failed.$database->select('account', [ 'user_id', 'user_name'], [ '#datetime2' => 'now()', 'datetime3' => 'NOW()', '#datetime4' => 'NOW']);

其它参数$database->select("account", "user_id", [ "GROUP" => "type", // Must have to use it with GROUP together "HAVING" => [ "user_id[>]" => 500 ], // LIMIT => 20 "LIMIT" => [20, 100]]);// SELECT user_id FROM account// GROUP BY type// HAVING user_id > 500// LIMIT 20,100

php mysql 条件查询语句_where 查询条件-Medoo - 高效的轻量级PHP数据库框架, 提高开发效率!...相关推荐

  1. php medoo好用吗,where 查询条件-Medoo - 高效的轻量级PHP数据库框架, 提高开发效率!...

    WHERE 语句 SQL中使用where可能会有一些不安全的动态参数传入或者一些复杂的SQL语句,但是Medoo提供非常简介和安全的方法来实现这些. 基本使用 在基本使用中. 你可以使用一些符号对参数 ...

  2. 检索数据_8_查询语句里执行条件判断

    查询语句里执行条件判断 需求描述 需求:查询雇员表emp里的员工名称.工资.工资分类状态.这里的工资分类状态按照以下规则显示:如果工资小于等于2000则显示UNDERPAID(即报酬比较低的),如果工 ...

  3. PHP获取MySQL执行sql语句的查询时间

    PHP获取MySQL执行sql语句的查询时间 1. $t1=microtime(true); mysql_query($sql); echo microtime(true)-$t1; 2. //计时开 ...

  4. mysql日期与时间查询语句:查询当年、查询本年、查询当月、查询本周

    mysql日期与时间查询语句:查询当年.查询本年.查询当月.查询本周 select sum(1) as years, (select sum(1) from `表名` where date_forma ...

  5. hibernate中的hql查询语句list查询所有与iterate查询所有的区别

    hibernate中的hql查询语句list查询所有与iterate查询所有的区别 list查询所有: 01,会立即产生一条select语句1select查询出来的所有语句都会被session管理, ...

  6. SQL查询语句,怎样查询重复数据

    SQL查询语句,怎样查询重复数据 2012-02-22 14:50神奇的马骁勇 | 浏览 0 次 有表A, 中有字段id, name, memo现在有很多id重复的数据,怎么把这些重复的都查出来?gr ...

  7. sql查询每科成绩的最高分_SQL查询语句: 查询 每科目分数最高的5项(学生姓名,科目,分数)...

    SQL查询语句: 查询 每科目分数最高的5项(学生姓名,科目,分数) 关注:251  答案:4  mip版 解决时间 2021-01-10 16:21 已解决 2021-01-09 22:40 SQL ...

  8. jpa mysql sql分页查询语句_JPA多条件复杂SQL动态分页查询功能

    概述 ORM映射为我们带来便利的同时,也失去了较大灵活性,如果SQL较复杂,要进行动态查询,那必定是一件头疼的事情(也可能是lz还没发现好的方法),记录下自己用的三种复杂查询方式. 环境 spring ...

  9. mysql复杂连接查询语句_MySQL查询语句之复杂查询

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

最新文章

  1. 杭电 hdu 2096
  2. 超全汇总 | ORB-SLAM2 / ORB-SLAM3 相关改进代码!
  3. 待飞日记(第四天和第五天)
  4. asp.net mvc cookie超时返回登录页面问题
  5. sqlserver 安装共享功能什么意思_手表上的小表盘,大表盘是什么意思?它们可以带来哪些好玩的功能...
  6. im4java profile_GraphicsMagick+im4java
  7. VC编程实现IE风格的界面
  8. PHP的钩子实现解析
  9. 3-3:HTTP协议之request和respond及常见请求方法和常见状态码
  10. 和老婆在MSN上面的涂鸦
  11. (转)Maven仓库——私服介绍
  12. 交互软件Axure—高保真原型
  13. 纪念日+小游戏+工具小软件
  14. iPhone 14连夜跌至4800元,现在应该直接入手14,还是等15?
  15. Python基础之什么是字典?
  16. vr计算机组装,VR技术在计算机组装与维护教学中的应用
  17. PCIE设备访问及其配置空间
  18. 异或的性质 HDOJ 2095 find your present (2)
  19. mysql socket socat_socat在Windows下的使用
  20. Verilog代码编辑工具

热门文章

  1. 【PAT甲级 sc.nextInt()的使用】1008 Elevator (20 分) Java版 9/9通过
  2. maven工程xml文件路径问题
  3. Java实现心跳机制
  4. 开始使用gradle(二)
  5. 操作系统(3) -- 内存管理
  6. 【解题报告】Leecode 643. 子数组最大平均数 I——Leecode 刷题系列
  7. iphone震动反馈怎么设置_如何评价 iPhone 上的振动反馈?
  8. mysql事务用法介绍及储存引擎介绍(MyLSAM,Innodb)
  9. java 如何将word 转换为ftl_如何把word转化为pdf?职场达人必需的转换技巧
  10. pve 不订阅更新_??“吃鸡”体验服已无更新,暗夜危机2.0或将被1款新游代替