修复方法:

首先我先给出无效情况的演示代码,如下:$userid = intval($_GET['userid']);

$userinfo = $this->db->get_one('userid='.$userid);

$this->db->set_model(10); //原因便在这里

$userdetail = $this->db->get_one("userid=".$userid);

$avatar = get_memberavatar($userid,1,180); //结果$avatar为空内容

我们再来看下get_memberavatar()的部分源码:function get_memberavatar($uid, $is_userid='', $size='30') {

if($is_userid) {

$db = pc_base::load_model('member_model');

$memberinfo = $db->get_one(array('userid'=>$uid)); //获取会员的基本信息

if(isset($memberinfo['phpssouid'])) {

$uid = $memberinfo['phpssouid'];

} else {

return false;

}

}

...

综合以上两段代码,不知道你有没有发现错误原因在哪里呢?

当我们把后者代码放到前者代码的环境中时,并且第二个参数为真时,因为第一段代码中使用了set_model()方法对会员模型了设定从而使$this->db中的一个属性变量tablename(代表当前指向的数据表,默认为“member”)进行了更换,变成了“member_detail”之类的其它标,不再是‘member’这个值了,那么在后续的get_memberavatar()方法中再去读取会员信息时因为没有重置回member表,那么读取的仍然是‘member_detail'表,如此,后续数据中当然没有“$memberinfo['phpssouid']”这一项,结果返回false空内容。

解决方法:

解决方法当然也非常简单,就是在get_memberavatar()方法中为了防止外部环境中对数据表做了更改的影响,在方法里先重置操作回member表,再执行后面的操作。修改代码部分如下:if($is_userid) {

$db = pc_base::load_model('member_model');

$db->set_model(); //重置回member表

$memberinfo = $db->get_one(array('userid'=>$uid)); //获取会员的基本信息

...

avatar.php uid,phpcms函数库中获取会员头像方法get_memberavatar()有时无效问题相关推荐

  1. C标准函数库中获取时间与日期、对时间与日期数据操作及格式化

    表示时间的三种数据类型[编辑] 日历时间(calendar time),是从一个标准时间点(epoch)到现在的时间经过的秒数,不包括插入闰秒对时间的调整.开始计时的标准时间点,各种编译器一般使用19 ...

  2. 转载:如何将一个新函数加到MATLAB函数库中

    如何将一个新函数加到MATLAB函数库中 nkszjx2 2017-09-29 11:25:26 13864 收藏 2 分类专栏: matlab 文章标签: matlab 库 </div> ...

  3. fortran使用mkl函数库中的mkl_dcsrsymv计算矩阵与向量的乘积

    用fortran语言编写数值程序时,如果要计算一个大型稀疏矩阵与一个向量的乘积,可以使用下面高效的方法 1. 首先使用CSR格式大型稀疏矩阵进行存储 2. 调用mkl函数库中的mkl_dcsrsymv ...

  4. fortran使用MKL函数库中的scal计算一个标量和向量的乘积

    下面的代码使用MKL函数库中的scal计算一个标量和向量的乘积 program MKL_dotcuse blas95implicit noneinteger, parameter :: n = 10r ...

  5. 网页加载的不同的方式、点击按钮显示一句话、jQuery中获取元素的方法

    网页加载的不同的方式 <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...

  6. java 取数组的前90位_java 从int数组中获取最大数的方法

    java 从int数组中获取最大数的方法 首先要有数组的概念吧,知道什么是数组,简单讲就是存放一组数据的一个组合,就是一个数组....哈哈 已知一个int数组, 编程从数组中获取最大数. 思路分析: ...

  7. PB 中获取时间的方法

    PB 中获取时间的方法 1.获取当前日期和时间 sle_2.text= string(today(),'yyyy-mm-dd')+ " " + string(now(),'hh:m ...

  8. 大数据时代:9种从大数据中获取商业价值的方法

    很多大数据都是来自一些新的来源,这代表客户或合作伙伴互动的新渠道.和任何新的数据来源一样,大数据值得探索.通过数据探索,你可以了解一些之前所不知道的商业模式和事实真相. 关于管理大数据的调查显示,89 ...

  9. usestate中的回调函数_React 中获取数据的 3 种方法:哪种最好?

    译文 | https://cloud.tencent.com/developer/article/1535913 原文 | https://dmitripavlutin.com/ 在执行 I/O 操作 ...

最新文章

  1. html css 让元素居中显示,html – CSS:如何在居中元素周围对齐元素?
  2. html body onunload,html页面的onunload、onbeforeunload
  3. Centos7 安装 nginx 服务器的两种方式
  4. SHADER效果收集
  5. 通过Rman定期删除归档脚本
  6. 06-Flutter移动电商实战-dio基础_Get_Post请求和动态组件协作
  7. 活久见,自己创造的框架竟然比开源的好用
  8. python设计模式14-命令模式
  9. 报错,Unknown custom element: <DeviceVendorStatistics> - did you register the component correctly? For
  10. 【数字图像处理】基于SeetaFace2的人脸检测
  11. 一份个人计算机能力研修总结,计算机 个人研修总结
  12. mysql 查询存储过程 速度_查询mysql过程
  13. 抖音高贵气质的签名_这些抖音直播注意事项,不注意很可能被封号!
  14. 清华大学王观堂先生纪念碑铭----陈寅恪
  15. python xlsxwriter不覆盖写入_python学习-xlsxwriter模块
  16. 软件测试-七项测试的基本原则
  17. c语言指针倒数之和,用C语言将一个数开根号后再取倒数的方法
  18. 老图搬砖day04.2——JavaScript基础
  19. Linux命令操作之cat与cut
  20. 【Java】第11章 JAVA 异常处理 头歌Educoder实训作业(十一)

热门文章

  1. cmake find_package路径详解
  2. 手把手教你入门Git --- Git使用指南(Linux)
  3. python 学习2 /输入/ 输出 /列表 /字典
  4. 蓝桥杯真题训练 2019.4题
  5. java 签名 ecdsa_Java实现ECDSA签名算法
  6. 线粒体和叶绿体的基因组特点_如何组装植物叶绿体基因组
  7. java jsonobject.parse_JSON.parseObject的几种用法
  8. All men are brothers【并查集+数学】
  9. 【今日头条】【抖音火山】前端开发实习生
  10. Eclipse安装试用Hanlp