TP5 查询mysql数据库时的find_in_set用法

2019-06-14 08:04:50来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

$where['class_id'] = ['in', '$cid_all'];
$where['id'] = ['in', $all_user_id];//或这样子
$where['title'] = ['like', '%php%'];
$where['id'] = ['<>', $id];
$where['id'] = ['notin', $all_user_id];//不等于
与find_in_set()相反的函数可以用!find_in_set()
//值为数字
$id=419;
$where[] = ['exp',Db::raw("FIND_IN_SET($id,category)")];//category值为数字,例子:419,415,414
//值为字符串
$id值等于dfd 要注意'引号
$where[] = ['exp',Db::raw("FIND_IN_SET('$id',category)")];//category值为数字,例子:'349/417/419','349/413/415','349/413/416'
Db::name('menu')->where('FIND_IN_SET(:id,pid_all)',['id' => $id])->update([$field => $title]);

type 字段在数据库是以 1,2,3 形式存在 已说到FIND_IN_SET函数的使用

 

对于一些实在复杂的查询,比如find_in_set,也可以直接使用原生SQL语句进行查询,例如:

Db::table('think_user')
    ->where('find_in_set(1,sids)')
    ->select();::table('think_user')
    ->where('find_in_set(1,sids)')
    ->select();

 

为了安全起见,我们可以对字符串查询条件使用参数绑定,例如:

Db::table('think_user')
    ->where('find_in_set(:id,sids)',['id'=>$id])
    ->select();::table('think_user')
    ->where('find_in_set(:id,sids)',['id'=>$id])
    ->select();

自己的实例:

$gonggaolist = Db::table("fa_cms_archives")
            ->alias('a')
            ->join("fa_cms_channel w","a.channel_id=w.id")
            ->where("w.parent_id=20 and a.status='normal'")
            ->where("FIND_IN_SET('recommend',a.flag)")
            ->order("a.id desc")
            ->field("a.id,a.channel_id,a.title,a.likes,a.image,w.diyname,a.updatetime,a.flag")
            ->limit("4")
            ->select();
        dump($gonggaolist);

效果图

 


原文链接:https://www.cnblogs.com/zmdComeOn/p/11022713.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:PHP脚本数据库功能详解(下)

下一篇:国外主流PHP框架比较