PHP方法字符串拼接转化mysql进行数据查询
定义方法部分:
//定义数组 private $_getjoinstr = array(); /** 字段中包含 */ public function dbinstr($fiekd, $str, $spl1=",", $spl2=",") { return "instr(concat("$spl1", $fiekd, "$spl2"), "".$spl1.$str.$spl2."")>0"; } //字符串拼接转化mysql方法 public function getjoinstr($fids, $us, $lx=0, $slx=0) { $s = ""; //判断是否是数字 if(is_numeric($us)){ $key= "a".$fids."".$us."_".$lx.""; if(isset($this->_getjoinstr[$key]))return $this->_getjoinstr[$key]; //admin表中查询id、name、deptid、deptath $us = $this->getone($us,"id,`name`,`deptid`,`deptpath`"); } //如果没有数据,返回空 if(!$us)return ""; //有数据执行查询 $uid = $us["id"]; $key = "a".$fids."".$uid."_".$lx.""; if(isset($this->_getjoinstr[$key]))return $this->_getjoinstr[$key]; //判断是否为空 为空也执行查询 if($slx==0)$tj[] = "ifnull($fids,"")="""; //判断是否包含 all $tj[] = $this->dbinstr($fids, "all"); //判断包含的u开头的人员信息 $tj[] = $this->dbinstr($fids, "u".$uid); //根据当前用户信息去查询当前用户所在组 if($us){ $dep = explode(",", $us["deptpath"]); foreach($dep as $deps){ $_deps = str_replace(array("[","]"), array("",""), $deps); $tj[] = $this->dbinstr($fids, "d".$_deps); } } //用or链接 $s = join(" or ", $tj); $this->_getjoinstr[$key] = $s; return $s; }
调用部分:
$uid="1";//当前传入用户的ID $where_userid = m("admin")->getjoinstr("userid", $uid); if($where_userid) $s.= $where_userid; //获取所有的步骤 $rows = $this->db->getall("SELECT * FROM [Q]flow_course WHERE " .$s. " ORDER BY sort,id ASC");
数据库表中字段存储:
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: PHP使用PDO抽象层获取查询结果三种方式
- 下一篇: PHP之深度剖析:网站唯一登录,踢人效果