Jsnpp框架数据库操作where语句扩展
发布时间: 2021年5月12日 下午12:35 作者: Jsnpp 访问量: 994

我们在《 Jsnpp框架数据库操作where详解》一文里面介绍了数据库语句的“where”条件语句的更多用法,这一篇我们将进一步来介绍“where”的扩展用法。

“where”语句是可以连续使用的,如下面的代码所示:

->where('id', '>', 3)->where('name', 'mike')

上面代码里面的“where”语句是两个连续使用的,我们还可以连续使用更多的“where”语句。当我们连续使用where语句时,表示的是“and”条件连接,也就是:

id > 3 AND name = ‘mike’

那么,如果我们要使用“or”条件连接的话,该怎么做呢?

我们可以使用“orWhere”,看下面的示例:

->where('id', '>', 3)->orWhere('name', 'mike')

使用上面的代码就等同于下面的条件:

id > 3 OR name = ‘mike’

Jsnpp框架里面除了上面两个条件写法,还有另外几个where扩展,我们用表格来列出:

# 语法
说明
1 where and条件
2 orWhere or条件
3 whereOr 生成后向括号的or条件
4 andWhere 生成前后向括号的and条件
5 whereAnd 生成后向括号的and条件

以上语法都是可以链式组合的,我们合理使用这些条件语句就可以写出任意的条件判断,包括加括号的条件写法。 例如我们如果要写下面这样的条件:

id > 3 AND (name = ‘mike’ OR name = ‘jake’)

我们可以这样来组织条件语句:

->where('id', '>', 3)->whereAnd('name', 'mike')->orWhere('name', ' jake')

再举个例子,假设要实现下面这样的条件:

(id < 30 OR id > 100) AND (name = ‘mike’ OR name = ‘jake’)

我们可以这样来组织条件语句:

->where('id', '<', 30)->orWhere('id', '>', 100)->andWhere('name', 'mike')->orWhere('name', ' jake')

通过上面的几个例子,是不是感觉很简单。再退一步来说,假设您对组织条件还是不熟悉,那么Jsnpp框架也允许您把条件直接写在where里面,如下面的语句:

->where('id > 3 AND id<100')

上面的语句把所有条件直接写到了where里面,这在Jsnpp框架里面是允许的。但是我们更建议的写法是像下面这样:

->where('id > ? AND id < ?', [3, 100])

这是预处理的写法,我们强烈建议您这样写,因为这样写能够充分使用pdo的预处理功能。我们再来看一个更复杂的例子:

->where('(id < ? OR id > ?) AND (name = ? OR name = ?)', [30, 100, ‘mike’, ‘jake’])

我们建议的这种写法,用“?”号来代替具体的值,而把所有的值按顺序组织成数组作为第二个参数。

如果您愿意把语句直接写入where,那么上面介绍的几个where的扩展就可以不用了。您可以按您的喜好来选择使用。

出错
提交成功!
评论已经提交。
我们已经收到您的反馈!
/index/like.html
/index/dislike.html
/index/postpassword.html
Jsnpp
自豪地采用 Jpwrt