猿问

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

如图所示,图中username字段是从数据库中取出的一条记录所有。

$mes = M('user')->where(array('id'=>mt_rand(0,999999)))->find();
echo $i.$mes['username']."<br/>";

然后TP trace工具就会提示Undefined,虽然这样子不会影响使用,但是曾经有人说过提示Undefined的程序不严谨。

希望知道这方面的知识的小伙伴介绍下:

  • 为什么会提示Undefined?

  • 这样子写会导致不良的后果吗?

  • 严谨的写法要怎么写?


feiyanger
浏览 2619回答 2
2回答

Tobey_滔

错误了!!!你的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操作数据库的时候..你可以根据返回的信息判断一下是否获取到数据的

慕粉3297688

别用M函数,用<?phpnamespace 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];    }}这种方式!
随时随地看视频慕课网APP
我要回答