码迷,mamicode.com
首页 > Web开发 > 详细

关于ThinkPhp中getField方法存在的问题

时间:2016-07-07 11:01:50      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

在ThinkPhp中我们可以通过以下方式获取数据库数据
  1. query:直接执行SQL查询操作
  2. find:查询单选数据集
  3. getField查询字段值
  4. select:查询数据集
  5. 其他......

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


技术分享

通过源码可以知道在使用getField方法是对字段的操作在使用数据库函数时应该避免出现字符","
更改后的代码

  1. //生成新的ID
  2. function get_new_id(){
  3. //获取数据库最大ID并加1
  4. $id = $this->model->getField("max(id)+1");
  5. //如果数据库中没有数据则默认为1
  6. if($id<=0) $id = 1;
  7. return $id;
  8. }

参考:




关于ThinkPhp中getField方法存在的问题

标签:

原文地址:http://www.cnblogs.com/huangtailang/p/bdeb764077bc83dd3f208f9db7c8ec1e.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!