讲师中心 微信公众号
AI工具推荐 视频效率加速

ThinkPHP5数据库实例详解

浏览21089
更新时间2022-01-20

value 方法

这个方法比较简单,这里快速带大家过一遍,重点讲手册没有提及的参数默认值

1、功能: 获取单条记录某个字段的值

2、源码:/thinkphp/library/think/db/Query.php

4、参数和返回值

  • 该方法允许传入二个参数:
序号 参数 说明
1 字段名 当前记录中存在的字段名称
2 默认值 当查询失败时,返回该值
  • 返回值:mixed(任意类型),由字段值类型决定。
    • 如字段值是数字,则返回数值型,字符串则返回字符类型,以此类推;
    • 无返回值时,则返回事先设定的默认值,后面有详细的实例演示。

5、适用环境:

针对单条记录有意义 ,多条记录也只返回第一个记录对应的字段值

6、实例演示:

当前表tp5_staff 中数据如下:

1. 查询id = 1007 的记录中的name值

  • Index.php 源代码:
<?php
namespace app\index\controller;
use think\Db;

class Index {
    public function demo1(){ 

    //查询单条记录中某个字段的值,如果失败,可设置输出默认值
    $result = Db::table('tp5_staff')     //设置数据表tp5_staff
              ->where('id=1007')         //设置查询条件id=1007
              ->value('name','查无此人');  //查询字段值,如无则输出:查无此人

    //输出查询结果
    dump($result);
    }   
}
  • 查询结果:
string(9) "潘金莲"     //字符串类型,对应的值是:潘金莲,对照表可知查询成功
  • 对应的SQL语句:
SELECT `name` FROM `tp5_staff` WHERE ( id=1007 ) LIMIT 1

2. 查询id = 1107 的记录中的name值

注意:当前表中并无id=1107的记录,我们看一下无返回值时,如何处理?

  • 我们根据条件修改一下Index.php 源代码:
<?php
namespace app\index\controller;
use think\Db;

class Index {
    public function demo1(){ 

    //查询单条记录中某个字段的值,如果失败,可设置输出默认值
    $result = Db::table('tp5_staff')     //设置数据表tp5_staff
              ->where('id=1107')         //设置查询条件id=1107
              ->value('name','查无此人');  //查询字段值,如无则输出:查无此人

    //输出查询结果
    dump($result);
    }   
}
  • 查询结果:
string(12) "查无此人"     
//当前表中,并无id=1107的记录返回值,因此结果为假,这时输出我们事先设定的默认值,给客户一个人性友好的提示信息
  • 对应的SQL语句:
SELECT `name` FROM `tp5_staff` WHERE ( id=1107 ) LIMIT 1

3. 查询id > 1007 的所有记录中的name值

当给定条件是一个区间范围时,常理推断应该返回一个数组,是不是这样呢?看实例:

  • 修改Index.php 源代码中where条件:
<?php
namespace app\index\controller;
use think\Db;

class Index {
    public function demo1(){ 

    //查询单条记录中某个字段的值,如果失败,可设置输出默认值
    $result = Db::table('tp5_staff')     //设置数据表tp5_staff
              ->where('id > 1007')         //设置查询条件id 大于 1007
              ->value('name','查无此人');  //查询字段值,如无则输出:查无此人

    //输出查询结果
    dump($result);
    }   
}

分析:查看tp5_staff表,因为id为正整数,所以 id 大于 1007 的第一条记录是 id =1008 ,而 id=1008 记录对应的name值是:宋江

  • 运行结果:
string(6) "宋江"  //输出id = 1008 记录对应 name字段值
  • 相应的SQL语句:
SELECT `name` FROM `tp5_staff` WHERE ( id > 1007 ) LIMIT 1

结论:
 1.value方法只能返回单记录查询结果中的指定的字段值;
 2.当返回多个满足条件的记录时,也只获取第一条满足条件的记录对应字段值。

  1. 如果想获取全部满足条件的字段值,就要用下面的:column方法啦
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn