为了账号安全,请及时绑定邮箱和手机立即绑定

Thinkphp echo 数组中一个字段会提示Undefined

Thinkphp echo 数组中一个字段会提示Undefined

PHP
feiyanger 2016-10-19 23:29:31
如图所示,图中username字段是从数据库中取出的一条记录所有。$mes = M('user')->where(array('id'=>mt_rand(0,999999)))->find(); echo $i.$mes['username']."<br/>";然后TP trace工具就会提示Undefined,虽然这样子不会影响使用,但是曾经有人说过提示Undefined的程序不严谨。希望知道这方面的知识的小伙伴介绍下:为什么会提示Undefined?这样子写会导致不良的后果吗?严谨的写法要怎么写?
查看完整描述

2 回答

已采纳
?
Tobey_滔

TA贡献242条经验 获得超128个赞

错误了!!!你的sql语句有问题吧!!!M('user')->where(array('id'=>mt_rand(0,999999)))->find();的意思是寻找id=0-999999中的随意一个数据...但是你确定0-999999随机一个你数据库都有这个信息吗??建议修改成

M('user')->where(array('id'=>1))->find(); id为1的数据总有吧!!!由于获取不了数据..才会显示undefined的!!!在使用thinkphp操作数据库的时候..你可以根据返回的信息判断一下是否获取到数据的

查看完整回答
反对 回复 2016-10-20
  • feiyanger
    feiyanger
    我自己写的模拟库,有1000W条记录。SQL没有错。这个是变量没声明造成的,我昨晚找到答案了,但是还是不能理解声明和不声明的区别。PHP不是表示不需要声明么?
  • Tobey_滔
    Tobey_滔
    这样吧!!你首先把$mes看看是什么..你var_dump($mes);一下..看看数据格式...看看有没有$mes["username"]这一个值!!php是弱数据类型...但是不代表不需要声明....你可以使用isset()函数判断一下有无这个变量后再使用..这样就不会报类似的错误了
  • feiyanger
    feiyanger
    因为直接从数据库里面查出来的数据,值肯定是有的。用isset判断是个好办法,如果有就声明。
?
慕粉3297688

TA贡献8条经验 获得超3个赞


别用M函数,用<?php

namespace Admin\Model;
use Think\Model;

class PostsModel extends Model {
    
    protected $tableName = "posts";
    
    protected $_validate = [
        ['p_title', 'require', "标题不能为空"],
        ['p_content', 'require', "内容不能为空"],
    ];
    
    
    public function pagelist($page, $perPage) {
        $count = $this->count();
        $row = $this->page($page, $perPage)->select();
        return [$count, $row];
    }
}这种方式!

查看完整回答
反对 回复 2016-10-20
  • feiyanger
    feiyanger
    因为是随便写一个循环在生成测试数据,所以就没用Model了,哈哈,等有空去试试看。
  • 慕粉3297688
    慕粉3297688
    因为m函数在thinkphp5中已经不使用了! class PostsModel extends Model { protected $tableName = "user"; public function pagelist($page, $perPage) { $count = $this->count(); $row = $this->where(array('id'=>mt_rand(0,999999)))->save(); return [$count, $row]; } 按照我写的稍微改改试试!
  • 2 回答
  • 0 关注
  • 2618 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信