zoukankan      html  css  js  c++  java
  • 关于ThinkPhp中getField方法存在的问题

    在ThinkPhp中我们可以通过以下方式获取数据库数据

    1. query:直接执行SQL查询操作
    2. find:查询单选数据集
    3. getField查询字段值
    4. select:查询数据集
    5. 其他......
     
    但今天使用getField方法时查询某些字段时发现返回的结果却是Array类型(正常情况下是数据库中该字段对应的类型)
    经过反复测试后又看了ThinkPhp的源码才发现原来getField的第一个参数中如果有字符","那么ThinkPhp会认为你查询的是多个字段,因此返回的结果就是Array类型
    而正好我getField里的字段使用了Mysql中的某些函数(该函数包含字符",")
    function get_new_id(){
       //注意:使用getField方法时,如果不是查询N个字段那么应该防止字段中出现字符','
       //因为ThinkPhp会认为你是查询多个字段所以返回的结果是Array类型
       //返回数据库最大ID并加1
       return $this->model->getField("IFNULL(max(id),0)+1");
    }
    

      

     
     
     
    通过源码可以知道在使用getField方法时查询的字段在使用数据库函数时应该避免出现字符","
    更改后的代码
     
    //生成新的ID
    function get_new_id(){
       //获取数据库最大ID并加1
       $id = $this->model->getField("max(id)+1");
       //如果数据库中没有数据则默认为1
       if($id<=0) $id = 1;
       return $id;
    }
    

      

     
    参考:





  • 相关阅读:
    AnyVal与AnyRef
    安装Zookeeper
    Kafka
    ZooKeeper总结
    Idea中JDK为1.8,还提示Diamond types are not supported at this language level
    Hive 和 Mysql
    Spark练习代码
    响应状态码
    http简介
    csrf
  • 原文地址:https://www.cnblogs.com/huangtailang/p/5649268.html
Copyright © 2011-2022 走看看