ThinkPHP访问数据库的方法

访问的数据库为thinkphp,访问的数据表为user。

1、在config.php中配置定义,连接数据库

a、//全局配置定义
'DB_TYPE'=>'mysql', //数据库类型
'DB_HOST'=>'localhost', //服务器地址
'DB_NAME'=>'thinkphp', //数据库名
'DB_USER'=>'root', //用户名
'DB_PWD'=>'123456', //密码
'DB_PORT'=>3306, //端口
'DB_PREFIX'=>'think_', //数据库表前缀 

 

b、//PDO专用定义
'DB_TYPE'=>'pdo', //数据库类型
'DB_USER'=>'root', //用户名
'DB_PWD'=>'123456', //密码
'DB_PREFIX'=>'think_', //数据库表前缀
'DB_DSN'=>'mysql:host=localhost;dbname=thinkphp;charset=UTF8'

 

2、实例化模型 

a、//实例化Model类,传一个数据表名
$user = new Model('User');
//显示变量结构
var_dump($user);
Model 基类可以传递三个参数:
Model(['
模型名'],['数据表前缀'],['数据库连接信息']);
//实例化Model类,改变表前缀
$user = new Model('User','tp_');
//实例化Model类,定义数据库链接信息
$user =
newModel('User','think_','mysql://root:123456@localhost/thinkphp');
//打印出所有数据
var_dump($user->select());
使用 Model 基类需要导入命名空间 

 

b、//实例化Model
$user = M('User'); 

而使用 M()方法,则不需要导入命名空间。

 

c、当存在独立的业务逻辑或者属性的时候,还有一种对应数据表的模型定义, 比如在Home/Model下面建立 UserModel.class.php

//User模型类
namespace Home\Model;
use Think\Model;
class UserModel extends Model {} 
创建了 UserModel 模型类后,控制器那头就可以直接声明。
//User模型类
$user = new UserModel();
var_dump($user->select()); 

 

               模型类与数据表对应规范
模型名               对应的数据表(假设前缀是 think_)
UserModel          think_user
UserTypeModel   think_user_type 

虽然使用模型类和数据表对应较为方便,但当有时我们需要更换表名、前缀、附加数据库名等,就需要一些字段定义的操作。 

 

            数据表定义
字段属性              说明
tablePrefix     定义模型对应数据表的前缀
tableName    不包含表前缀的数据表名称
trueTableName   包含表前缀的数据表名称
dbName        定义模型当前对应的数据库名称 

 

class UserModel extends Model{
//重新定义表前缀 

protected $tablePrefix 'abc_';

//重新定义表名 
protected $tableName 'abc'
//重新定义完整的带前缀的表名 
protected $trueTableName 'tp_abc'
//附加数据库名 
protected $dbName 'tp'

d、如果有必要使用具体的模型类时,ThinkPHP 还提供了 D()方法来直接是实例化模型类,并且还可以免去引入命名空间等操作。 

 

/实例化UserModel类
$user = D('User'); 

 

PS:使用 D()方法比直接使用模型类更加的智能,如果在\Home\Model\UserModel 找不到该模型类, 那么就会去公共模块下找\Common\Model\UserModel 去找。 如果还找不到,
就会直接实例化基类 Model()类,也就是等同于使用 M()方法。 

 

你可能感兴趣的:(ThinkPHP访问数据库的方法)