请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 11425|回复: 0

[数据操作] findAll的WHERE条件

[复制链接]
发表于 2012-8-4 16:16:12 | 显示全部楼层 |阅读模式
在上章,我们提及了:

在find,findAll,findSQL等多个查找函数以及update,delete等函数中出现的参数$conditions,除了可以是数组格式外,还可以是字符串的形式,而字符串形式的$conditions就如同SQL语句中的WHERE后面的条件字符串一样的使用。

也就是说:findAll/find等函数的第一个参数$conditions,不一定要是数组(代表AND条件),而且还可以是字符串(代表SQL语句中WHERE条件)。可以进行 OR(或)、LIKE(模糊查找)、复合OR和AND等的较复杂的查找。

如我们希望能够查询到guestbook表中,留言者名称为“jake或lin”的留言:

通常我们可以使用以下SQL语句来查找:

SELECT * FROM spgb_gb WHERE name = 'jake' OR name = 'lin'

那么,如何使用findAll来查询呢?

  1. // 首先需要准备查找条件
  2. $conditions = " name = 'jake' OR name = 'lin' ";
  3. $gb = spClass('gb'); // 初始化留言本模型类
  4. $result = $gb->findAll($conditions); // 查找
  5. dump($result); // 查看结果,
复制代码

请注意$conditions = " name = 'jake' OR name = 'lin' ";的这行代码,即是说,我们将上述SQL语句中在WHERE后面的条件,写到了findAll的第一个参数内,这样最终就可以达到SQL语句的查询结果了。

下面我们再举一些例子:

1. 复合 OR 和 AND的查询

查询名称为jake或lin的留言,而且留言的时间是在5月3日之后。

SELECT * FROM spgb_gb WHERE ( name = 'jake' OR name = 'lin' ) AND post_time > '2010-05-03 00:50:55'

而findAll就是:

$conditions = "  ( name = 'jake' OR name = 'lin' ) AND post_time > '2010-05-03 00:50:55' ";

$results = $gb->findAll($conditions);

2. like模糊查找

模糊查找在留言内容(contents)中有“SpeedPHP”一词的留言。

SELECT * FROM spgb_gb WHERE contents like '%SpeedPHP%'

而findAll是:


$conditions = "  contents like '%SpeedPHP%' '";

$results = $gb->findAll($conditions);

上面可以看到,SpeedPHP的findAll查询的能力是非常强大的,不仅可以查询AND条件的,还可以查询OR,like等条件的数据。而且,以上的一切,都是不需要写SQL语句即可查询,大大方便了开发者日常的查找需要。


您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2020-7-7 02:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表