zoukankan      html  css  js  c++  java
  • tp框架知识 之(链接数据库和操作数据内容)

    框架有时会用到数据库的内容,在"ThinkPhp框架知识"的那篇随笔中提到过,现在这篇随笔详细的描述下。

    一、链接数据库

    (1)找到模块文件夹中的Conf文件夹,然后进行编写config.php文件

    我这里是这样的文件路径

    (2)打开这个config.php文件,然后找到父类配置文件convention.php文件,将关于"数据库"的部分复制粘贴到config.php配置文件中

    1
    2
    3
    4
    5
    6
    7
    8
    9
    /* 数据库设置 */
       'DB_TYPE'               =>  '',     // 数据库类型
       'DB_HOST'               =>  '', // 服务器地址
       'DB_NAME'               =>  '',          // 数据库名
       'DB_USER'               =>  '',      // 用户名
       'DB_PWD'                =>  '',          // 密码
       'DB_PORT'               =>  '',        // 端口
       'DB_PREFIX'             =>  '',    // 数据库表前缀
       'DB_FIELDS_CACHE'       =>  true,        // 启用字段缓存(开发时这个要写成false)

    下面是我的数据库连接内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
        return array(
        //'配置项'=>'配置值'
         
        /* 数据库设置 */
        'DB_TYPE'               =>  'mysql',     // 数据库类型
          'DB_HOST'               =>  'localhost', // 服务器地址
          'DB_NAME'               =>  'test3',          // 数据库名
          'DB_USER'               =>  'root',      // 用户名
          'DB_PWD'                =>  '123',          // 密码
          'DB_PORT'               =>  '3306',        // 端口
          'DB_PREFIX'             =>  '',       // 数据库表前缀
        'DB_FIELDS_CACHE'       =>  false,    // 启用字段缓存(开发时这个要是false)
    );

    连接成功后,然后就是新建模型文件了

    二、新建模型文件(具体内容看ThinkPhp框架知识)

    (1)找到模块文件夹中的Model文件夹,然后在这个文件夹新建模型文件

    a)         model本身就是一个类文件

    b)        数据库中的每个数据表都对应一个model模型文件

    c)         最简单的数据model模型类

    自己的模型文件

    1
    2
    3
    4
    5
    6
    7
    <?php
    namespace HomeModel;   //命名空间的写法
    use ThinkModel;          //使用模型
    class InfoModel extends Model
    {
         
    }

     (2)看下这个数据模型

    我们可以再控制器文件夹中进行编写控制文件,这里有了一个控制文件,我就用这个了

    打开控制文件,然后写个方法,这里叫做ceshi()

    1
    2
    3
    4
    5
    6
    public function ceshi()
    {
      $info = new HomeModelInfoModel();  //造新对象,这里是Info模型
      var_dump($info);  //输出一下,看下结果
             
    }

    输出看一下结果,注意这里地址栏的写法(在框架知识中已经介绍过了4中访问方式了):

    这是我的路径:     

    下面是对应的模型数据:

     三、对数据库进行操作(下面的是ThinkPHP模型基础类提供的“连贯操作方法”连贯操作方法)

    可以利用这个控制文件中的方法,就直接在这个方法中写了

    1
    2
    3
    4
    5
    6
    public function ceshi()
    {
      $info = new HomeModelInfoModel();  //造新对象,这里是Info模型
      //下面是数据库操作
             
    }

     

    (1)查询表中的所有数据(方法:select())

    返回的二维数组(关联的)
    返回的数据其中的字段名称是小写,这样做数据库时尽量是小写的

    例如:

    1
    2
    $arr = $info->select();
    var_dump($arr);

    看下是不是查询的数据库中所有内容

       

    数据库中的内容:

       

    (2)查询一条数据(方法:find())

     例如:

    1
    $arr = $info->find("p002");<br>var_dump($arr);

    这是查询的:代号是"p002"的信息,如下:

    select()方法也是可以查询一条或是多条数据,如下:

    1
    2
    $arr = $info->select("p001,p002");
    var_dump($arr);

    这是查询的:代号是"p001"和"p002"的信息,如下:

    (3)条件查询数据(方法:where())

    1
    $arr = $info->where("code='p003'")->select();<br>var_dump($arr);  

     这是查询的条件:代号是p003的所有信息

    (4)切换数据表(方法:table())

    例如:

    1
    $arr = $info->table("nation")->select();<br>var_dump($arr);

    这是却换了一张nation表:

    (5)选择操作的字段(方法:field())

    例如:

    1
    $arr = $info->field("name,sex,birthday")->select();<br>var_dump($arr);

    查询字段是:姓名、性别和生日的字段

    (6)对数据进行排序(方法:order())

    例如:

    1
    2
    $arr = $info->order("code desc")->select();
    var_dump($arr);

    这是对code进行降序排列

    (7)分页查询数据(方法:limit()和page())

    例如:limit()

    1
    2
    $arr = $info->limit("2,2")->select();
    var_dump($arr);

    这是显示的第2页的内容:

    例如:page()

    1
    2
    $arr = $info->page("2,2")->select();
    var_dump($arr);

    这个也是显示的第2页的内容:

    注意:

    limit()和page()的不同之处:后者的参数是直接显示“第几页”,“几条”

    (8)对数据进行分组(方法:table())

    例如:

    1
    2
    $arr = $info->table("car")->field("max(price)")->group("brand")->select();
    var_dump($arr);

    这是查询的car表中的最大价格,并且根据brand的字段进行分组

    例如:

    1
    2
    $arr = $info->table("car")->field("max(price)")->group("brand")->having("max(price)>60")->select();
    var_dump($arr);

    这是上面的那个查询,但是加了一个条件就是价格大于60的

    (9)链接查询数据库(方法:join())

    例如:

    1
    2
    $arr = $info->field("info.code as '代号', info.name as '姓名',nation.name as '民族'")->join("nation on info.nation=nation.code")->select();
    var_dump($arr);

    这是链接查询的两张表(汉语的地方最后用字符,因为后面要用到他的值)

    (10)去重(distinct())

    例如:

    1
    2
    $arr = $info->table("car")->distinct(true)->field("brand")->select();
    var_dump($arr);

    这是查询的数据库中重复的字段

  • 相关阅读:
    c:forTokens标签循环输出
    jsp转long类型为date,并且格式化
    spring中@Param和mybatis中@Param使用区别(暂时还没接触)
    734. Sentence Similarity 有字典数组的相似句子
    246. Strobogrammatic Number 上下对称的数字
    720. Longest Word in Dictionary 能连续拼接出来的最长单词
    599. Minimum Index Sum of Two Lists两个餐厅列表的索引和最小
    594. Longest Harmonious Subsequence强制差距为1的最长连续
    645. Set Mismatch挑出不匹配的元素和应该真正存在的元素
    409. Longest Palindrome 最长对称串
  • 原文地址:https://www.cnblogs.com/aqxss/p/6530550.html
Copyright © 2011-2022 走看看