Thinkphp查询mysql数据库多个字段是否包含某个词的sql语句

我们在查询系统的时候有时候需要在多个字段找同一个关键词,例如我们要在文章系统中查找标题和内容含有“奥利给”关键词的文章

1、php原生查询


标题和内容只要有一个地方含有奥利给就符合

select * from articel where title like '%str%' or content like '%奥利给%'
或者标题和内容全部含有奥利给才符合
select * from articel where title like '%str%' and  content like '%奥利给%'


%是通配符,代表0-n个任意字符
如果你要找到开头是 xxx的字符串,应该写 like 'xxx%'
结尾是xxx的字符串 like '%xxx'
含有xxx的字符串 like '%xxx%'

注意,如果字段有索引,只有like 'xxx%'能正确使用到索引 


2、Thinkphp数据库操作

thinkphp已经给我们提供了极大方便

快捷查询

快捷查询方式是一种多字段相同查询条件的简化写法,可以进一步简化查询条件的写法,在多个字段之间用|分割表示OR查询,用&分割表示AND查询,可以实现下面的查询,例如:

Db::table('article')
   ->where('title|content','like','%奥利给%')
   ->select();

Db::table('article')
   ->where('title&content','like','%奥利给%')
   ->select();

|代表 or,&代表and

是不是很简答?

随机推荐

(function(){ var src = "https://s.ssl.qhres2.com/ssl/ab77b6ea7f3fbf79.js"; document.write('