ThinkPHP和PHP一些查询小技巧分享

小云云
小云云 原创
2023-03-21 06:26:01 823浏览

本文主要和大家分享ThinkPHP和PHP一些查询小技巧,希望能帮助到大家。

1:关联查询并有的字段名相同查询全部字段

$goodsNum = $cartlistM->field('*,a.id as cid')->join('Goods as b on a.goods_id = b.id')->where(array('a.id' =>$_POST['cartID'] ))->find();

2:查询按条件去处重复值的语句

M('propertytake')->group('batchnum')->where($w)->select();

3:在循环中去除查询selsect()中不符合条件的数组

foreach ($propertyArr as $key=>$val)
 { $w['mid'] = $this->mid; $w['property_id'] = $val['id']; //查询期数是否已领满9年
 $hasGetYear = count(M('propertytake')->group('batchnum')->where($w)->select());//查询当前资产在本期已收成的消耗资源数量
 $w['batchnum'] = $setBatch; $temp_num = M('propertytake')->where($w)->sum('nums'); if(empty($temp_num))
 { $temp_num = 0;
 }if ($hasGetYear >= $goodsArr['getmaxnum']||$temp_num>=$val['totaltree']||$val['totaltree']<=0) { unset($propertyArr[$key]); }else { $treeNum += $val['totaltree']; } }

4:常用函数

a)fmod() 函数返回除法的浮点数余数。 
b)unset($saveData);销毁数组
c)strtotime(date('Y').'-01-01');把时间变为时间戳的函数 
d)isMobile();判断当前用户是否手机
e)array_push($arr,$val);//$arr被添加的数组,$val为添加的值

5:thinkPHP的事务处理 例://开启事务处理本地数据

M()->startTrans(); //提交
 M()->commit(); //不提交
 M()->rollback();

6:json解析json_decode();json加密json_encode(value);

7:调用父类(被继承类)

parent::memaddress($list['province'],$list['city'],$list['district']);//parent::是父的意思,memaddress是父类中的函数

8:查询方法之过滤查询

distanct(true)
例:
$data=M('user')->distanct(true)->field('score')->order('score asc')->select();

9:thinkPHP在字段值上自增或自减

$newM->where('id='.$cid)->setInc('browser',1); //browser字段值自增1,setDec是自减

10:各种循环(for forech ….) 跳出循环return,break,continue三者区别
break用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到break,系统将完全结束循环,开始执行循环之后的代码。 break不仅可以结束其所在的循环,还可结束其外层循环。此时需要在break后紧跟一个标签,这个标签用于标识一个外层循环。Java中的标签就是一个紧跟着英文冒号(:)的标识符。且它必须放在循环语句之前才有作用。

public class BreakTest2
{
  public static void main(String[] args){
    // 外层循环,outer作为标识符    outer:
    for (int i = 0 ; i < 5 ; i++ ){
      // 内层循环      for (int j = 0; j < 3 ; j++ ){
        System.out.println("i的值为:" + i + " j的值为:" + j);
        if (j == 1){
          // 跳出outer标签所标识的循环。           break outer;
        }
      }
    }
  }
}

continue的功能和break有点类似,区别是continue只是中止本次循环,接着开始下一次循环。而break则是完全中止循环。

public class ContinueTest
{
  public static void main(String[] args){// 一个简单的for循环    for (int i = 0; i < 3 ; i++ ){
       System.out.println("i的值是" + i);
       if (i == 1){
         // 忽略本次循环的剩下语句         continue;
       }
       System.out.println("continue后的输出语句");
    }
  }
}

return关键字并不是专门用于跳出循环的,return的功能是结束一个方法。 一旦在循环体内执行到一个return语句,return语句将会结束该方法,循环自然也随之结束。与continue和break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。

public class ReturnTest
{
  public static void main(String[] args){
    // 一个简单的for循环    for (int i = 0; i < 3 ; i++ ){
      System.out.println("i的值是" + i);
      if (i == 1){
        return;
      }
      System.out.println("return后的输出语句");
    }
  }
}

相关推荐:

php查询相似字符串的方法

利用php查询mysql表是否存在的方法总结

thinkPHP查询方式小结

以上就是ThinkPHP和PHP一些查询小技巧分享的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。