天下网吧 >> 网吧天地 >> 天下码农 >> 后端开发 >> PHP >> 正文

解决一例TP6提示未定义数组索引:XXX

未定义数组索引这个错误在ThinkPHP框架见得非常多。因为引起这个错误的原因太常见了,比如你查询数据时,得到的数组索引没有你引用的索引那么就会提示这个错误。还有如果你查询到的数据为空时,但是你模板文件里却引用这个值也会提示这个错误。

所以避免这种错误的方法就是数据的完整性效验,先效验后引用的方式。

这次碰到这个错误提示比较奇怪,这套系统是别人写的,我也是帮朋友的忙接触过一次,首次安装调试是我做的,因为朋友找的人搞不定,我就接手安装了。

安装后交付给朋友使用后,就一直没再接触这套系统。

直到昨天出问题。因为系统之前用得好好的,突然就说不行了,问了下朋友执行了什么操作,朋友的回答原话是:

「添加分类了以后,点击确认然后一直卡在那里就崩溃了  」

那么,我首先想到的就是数据添加失败,写入脏数据了。

于是吧,连上阿里云后台,远程服务器,找到这套系统安装文件夹(因为只是临时维护下,所以没安装配置本机的调试环境,有什么问题直接上服务器),找到runtime下的log文件夹,查看日志,发现执行到这一句就卡住了:


[2022-04-08T17:34:52+08:00][sql] SELECT `id` FROM `tp_cate` WHERE  `module_id` = 25 LIMIT 1 [ RunTime:0.000137s ]


顺藤摸瓜找打tp_cate表并且执行这条语句发现没有返回任何数据,因为没有数据所以报错了。

仔细看下这个表,发现最新添加的那条记录的module_id为0,这个不应该,这个字段按作用来讲不可能会0的,所以这个就是朋友说的卡住崩溃后的脏数据吧,不管他了,手动把这个字段值改为25.再刷新网页,正常了!

总结:

TP框架的log做得非常全,排查错误非常方便。灵活运用log日志定位问题很方便。

另外,引起TP框架提示「未定义数组索引:XXX」的原因基本上都是因为数据源问题。比如你查询的数组是$array['xx']['bbb'],而你访问的是$array['bbb']那么就会报错了

本文来源:天下网吧 作者:天下码农

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行