PHP服务端开发入门——14、ThinkPHP框架数据操作

695 阅读3分钟

ThinkPHP框架数据操作

本节介绍

  • 数据库连接配置
  • 数据创建
  • 数据写入
  • 数据读取
  • 数据更新
  • 数据删除

1. ThinkPHP的数据库连接

  • ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。目前的数据库包括MySQL、SQLServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括对PDO的支持
  • 如果应用需要使用数据库,必须配置数据库连接信息

2. 数据库配置

  • 可在Home/Conf/config.php文件中添加数据库配置:
    • //数据库配置信息
      'DB_TYPE'   => 'mysql', // 数据库类型
      'DB_HOST'   => 'localhost', // 服务器地址
      'DB_NAME'   => 'thinkphp', // 数据库名
      'DB_USER'   => 'root', // 用户名
      'DB_PWD'    => '123456', // 密码
      'DB_PORT'   => 3306, // 端口
      'DB_PREFIX' => 'think_', // 数据库表前缀 
      'DB_CHARSET'=> 'utf8', // 字符集
      'DB_DEBUG'  =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志 3.2.3新增
      
  • 支持的数据库设置:

3. CURD操作

  • ThinkPHP提供了灵活和方便的数据操作方法,对数据库操作的四个基本操作(CURD):创建、更新、读取和删除的实现是最基本的,也是必须掌握的,在这基础之上才能熟悉更多实用的数据操作方法。CURD操作通常是可以和连贯操作配合完成的。
  • 创建数据库表模型&对象,首字母大写

(1) 数据创建

  • // 获取表单的POST数据
    $data['name'] = $_POST['name'];
    $data['email'] = $_POST['email'];
    // 更多的表单数据值获取
    //……
    
    // 实例化User模型
    $User = M('User');
    // 根据表单提交的POST数据创建数据对象
    $User->create();
    

(2) 数据写入

  • ThinkPHP的数据写入操作使用add方法。
  • $User = M("User"); // 实例化User对象
    $data['name'] = 'ThinkPHP';
    $data['email'] = 'ThinkPHP@gmail.com';
    $User->add($data);
    

(3) 数据读取

  • 在ThinkPHP中读取数据的方式很多,通常分为读取数据、读取数据集和读取字段值。

  • 数据查询方法支持的常用连贯操作方法:

  • 读取数据:

    • 读取数据是指读取数据表中的一行数据(或者关联数据),主要通过find方法完成
    • $User = M("User"); // 实例化User对象
      // 查找status值为1name值为think的用户数据 
      $data = $User->where('status=1 AND name="thinkphp"')->find();
      dump($data);
      
  • 读取数据集

    • 读取数据集其实就是获取数据表中的多行记录(以及关联数据),使用select方法
    • $User = M("User"); // 实例化User对象
      // 查找status值为1的用户数据 以创建时间排序 返回10条数据
      $list = $User->where('status=1')->order('create_time')->limit(10)->select();
      
  • 读取字段值

    • 读取字段值其实就是获取数据表中的某个列的多个或者单个数据,最常用的方法是getField方法。
    • $User = M("User"); // 实例化User对象
      // 获取ID为3的用户的昵称 
      $nickname = $User->where('id=3')->getField('nickname');
      

(4) 数据更新

  • ThinkPHP的数据更新操作包括更新数据和更新字段方法。
  • 更新数据:
    • 更新数据使用save方法
      • $User = M("User"); // 实例化User对象
        // 要修改的数据对象属性赋值
        $data['name'] = 'ThinkPHP';
        $data['email'] = 'ThinkPHP@gmail.com';
        $User->where('id=5')->save($data); // 根据条件更新记录
        
    • 也可以改成对象方式来操作
      • $User = M("User"); // 实例化User对象
        // 要修改的数据对象属性赋值
        $User->name = 'ThinkPHP';
        $User->email = 'ThinkPHP@gmail.com';
        $User->where('id=5')->save(); // 根据条件更新记录
        
  • 数据更新方法支持的连贯操作方法:

(5) 数据删除

  • ThinkPHP删除数据使用delete方法。
  • 删除主键为5的数据:
    • $Form = M('Form');
      $Form->delete(5);
      
  • delete方法可以删除单个数据,也可以删除多个数据,这取决于删除条件。
    • $User = M("User"); // 实例化User对象
      $User->where('id=5')->delete(); // 删除id为5的用户数据
      $User->delete('1,2,5'); // 删除主键为1,2和5的用户数据
      $User->where('status=0')->delete(); // 删
      
  • delete方法的返回值是删除的记录数,如果返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。