• php随意记记


     

     PHP sql写法注意点:

    ①、php原生sql写法:
      $result = Db::query('select b.* from tp_admin a LEFT JOIN tp_cate b on(a.id= b.id) '); 
      占位符写法:
        $result = Db::query('select * from tp_cate where id = :id',['id'=>$id]); 
      拼接字符串:
       $sql = 'select * from t_admin where 1=1';
    $sql .= ' and nickname = '.$param['nickname'];
    $sql .= ' and create_time >= '.$param['start'];

      

    ②、thinkphp内置写法:
      $result =
    model('admin')->select();

    --------------------------------------------
    渲染返回数据有区别的:
    $dataview = [
    'allData' => $result,
    ];
    $this->assign($dataview);
    return view();
    -------------------------------------------
    前台js接受:
    ①、原生写法的渲染结果,报错 htmlentities() expects parameter 1 to be string, array given
    <script>
    console.log('{$allData}'); //报错
    </script>
      解决方案:
      php后台代码处理:(将数组类型转成JSON字符串)
        $result = json_encode(Db::query('select b.* from tp_admin a LEFT JOIN tp_cate b on(a.id= b.id) '));
    
    
    ②、tp内置写法: 正确 渲染结果是string类型
    <script>
    var xx = '{$allData}'
    console.log(typeof(xx)); //ok ,返回string类型
    </script>
    格式化输出:
      $str =sprintf("sprintf输出:他名字叫%s,年龄是%u",'xiaohao',20);
    结果:
      sprintf输出:他名字叫xiaohao,年龄是20

    session传值和取值

     1 向session中存信息:
     2 session('admin',['id'=>$ret['id'],'nickname'=>$ret['nickname']]);
     3 获取session中的信息:
     4 session('admin.id') or session('admin')['id']
     5 
     6 ----------------------------------------------
     7 从request中获取信息
     8 $_GET['name'] or $_POST['name']
     9 ||
    10 input('name')
    11 -----------------------------------------------
    12 判断请求类型
    13 request()->isGet() //request()->isAjax()
    总结:
    $_SESSION 、 $_REQUEST 等貌似都可以用session() 和 request() 来调用

      验证器的使用

    class User extends Validate
    {
        protected $rule =   [
            'name'  => 'require|max:25',
         'password' => 'require',
            'age'   => 'number|between:1,120',
            'email' => 'email',    
        ];
        
        protected $message  =   [
            'name.require' => '名称必须',
         'name.max'     => '名称最多不能超过25个字符',
            'password.require' => '密码不能为空',
            'age.number'   => '年龄必须是数字',
            'age.between'  => '年龄只能在1-120之间',
            'email'        => '邮箱格式错误',    
        ];
      
      #上面的写法,可简写成如下(上面的写法信息更加具体) 
            protected $rule = [
                'name|用户名' => 'require|max:25',
            'password|密码' => 'require',
                'age|年龄' => 'number|between:1,120',
                'email|邮箱' => 'email'
            ]; 
     
      #可以定义场景,即使用指定的变量规则
      public function  sceneLogin(){
           return $this->only(['name', 'password']);
    
      }
    }
    ---------------------------------------------------------------------------
    使用:
    $validate = new appindexvalidateUser;
    #只使用自定义规则,不适用场景验证
    if (!$validate->check($data)) {
        return $validate->getError();
    }
    
    #使用自定义验证场景,scene开头名字为login,调用的时候就使用
    if (!$validate->sceneLogin()->check($data)) {
        return $validate->getError();
    }
    或者
    if (!$validate->scene('login')->check($data)) {
        return $validate->getError();
    }
    
    
    
    
    

    给控制器增加后缀Controller区分

    1 修改config/app.php配置文件
    2 // 控制器类后缀
    3 'controller_suffix'      => true,
    注意增加了这个之后,原本的Index.php就没用了,所以要访问首页,自己得创建一个IndexController.php

    php中的json对象和json字符串转换

    ①、将json字符串转换成json数组对象
        $str = '[{"u6708u4efd":"201801","IPD":"9","POT":"25","PLC":"386","SEN":"202","INV":"168"},{"u6708u4efd":"201802","IPD":"8","POT":"10","PLC":"119","SEN":"125","INV":"40"},{"u6708u4efd":"201803","IPD":"6","POT":"35","PLC":"383","SEN":"214","INV":"200"},{"u6708u4efd":"201804","IPD":"22","POT":"33","PLC":"341","SEN":"243","INV":"130"},{"u6708u4efd":"201805","IPD":"10","POT":"38","PLC":"443","SEN":"240","INV":"135"},{"u6708u4efd":"201806","IPD":"4","POT":"20","PLC":"379","SEN":"266","INV":"130"},{"u6708u4efd":"201807","IPD":"7","POT":"16","PLC":"376","SEN":"341","INV":"132"},{"u6708u4efd":"201808","IPD":"0","POT":"0","PLC":"1","SEN":"0","INV":"0"}]';
        $jsonArr = json_decode($str);
    ②、将json数组转成json字符串
    $jsonArr = json_encode(Db::query('select DISTINCT date from tp_data')); var_dump($jsonArr); //string(136) "[{"date":1},{"date":2},{"date":3},{"date":4},{"date":5},{"date":6},{"date":7},{"date":8},{"date":9},{"date":10},{"date":11},{"date":12}]"

    thinkphp5拼接数组查询条件

    方式一:直接传入数组

    $where = array();
            if (!empty($status))
                $where[] = array('status', '=', $status);
            if (!empty($auid))
                $where[] = array('auid', '=', $auid);

    方式二:数组对象查询,需要 实例化Where() ,use thinkdbWhere;

    $where = new Where();
            if ($start_time > 0 && $end_time > 0)
                $where['s.create_time'] = array('between', [$start_time, $end_time]);
            if (!empty($status))
                $where['s.status'] = array('=', $status);
            if ($user_id > 0)
                $where['s.auid'] = array('=', $user_id);

    variable type error: array 错误

    https://www.kancloud.cn/manual/thinkphp5/118017
    当页面返回 thinkphp5  variable type error: array 错误时,是返回的类型错误,默认default_return_type返回是html
    

      

    欢迎对it热情的同学,加qq进行技术讨论; QQ:850922253
  • 相关阅读:
    3.10上午学习内容
    计算机网络基础
    2017.3.30-morning
    2017.3.29-afternoon
    2017.3.29-morning
    2017.3.28-afternoon
    2017.3.28-morning
    2017.3.27-afternoon
    2017.3.27-morning
    2017.3.24-morning
  • 原文地址:https://www.cnblogs.com/zhangwensi/p/11343214.html
Copyright © 2020-2023  润新知