ThinkPHP内置了抽象数据库访问层,把不同的数据库 *** 作封装起来,只需要使用公共的Db类进行 *** 作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。目前的数据库包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括对PDO的支持,如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式。
常用的配置方式是在项目配置文件中添加下面的参数:
<?php
//项目配置文件
return array(
//数据库配置信息
'DB_TYPE' =>'mysql', // 数据库类型
'DB_HOST' =>'localhost', // 服务器地址
'DB_NAME' =>'thinkphp', // 数据库名
'DB_USER' =>'root', // 用户名
'DB_PWD'=>'', // 密码
'DB_PORT' =>3306, // 端口
'DB_PREFIX' =>'think_', // 数据库表前缀
//其他项目配置参数
// ...
)
需要注意的是,ThinkPHP的数据库连接的惰性的,所以并不是在实例化的时候就连接数据库,而是在有实际的数据 *** 作的时候才会去连接数据库(额外的情况是,在系统第一次实例化模型的时候,会自动连接数据库获取相关模型类对应的数据表的字段信息)。
在应用配置目录或者模块配置目录(不清楚配置目录位置的话参考配置章节)下面的database.php中(后面统称为数据库配置文件)配置下面的数据库参数:return [
// 数据库类型
'type'=>'mysql',
// 服务器地址
'hostname'=>'127.0.0.1',
// 数据库名
'database'=>'thinkphp',
// 数据库用户名
'username'=>'root',
// 数据库密码
'password'=>'',
// 数据库连接端口
'hostport'=>'',
// 数据库连接参数
'params' =>[],
// 数据库编码默认采用utf8
'charset' =>'utf8',
// 数据库表前缀
'prefix' =>'think_',
]
系统默认支持的数据库type包括:
type 数据库
mysql MySQL
sqlite SqLite
pgsql PgSQL
sqlsrv SqlServer
type参数支持命名空间完整定义,不带命名空间定义的话,默认采用\think\db\connector作为命名空间,如果使用应用自己扩展的数据库驱动,可以配置为:
// 数据库类型
'type'=>'\org\db\Mysql',
表示数据库的连接器采用 \org\db\Mysql类作为数据库连接驱动,而不是默认的\think\db\connector\Mysql。
ThinkPHP中如何连接数据库 *** 作数据库之前,我们要建立一个Model。在说Model和Action之前,先交代一下Model和Action的保存位置。Model保存在 程序目录中lib/Model文件夹中,Action保存在程序目录中lib/Action文件夹中。ThinkPHP系统默认的Model规则是这样子 的:Model文件文明名类似“Model类名+Model.class.php,并且Model默认的 *** 作数据库表名字为我们在config.php中 定义的DB_PREFIX+Model类名,Model类名和文件名需要大写”在Model文件中,定义一个类,扩展Model类,一般写法如下class 类名Model extends Model{}那么,现在我们来定义一个Model吧。由于我们数据库表名称为cms_article,class ArticleModel extends Model{}文件保存为ArticleModel.class.php。什么都不用写,一个Model已经定义完成了。那么现在,我们继续我们的Action知识吧。Action和Model很多的规则很接近,不同的是Action不直接 *** 作数据库,而是需要通过Model对数据库进行 *** 作。现在我们来定义一个Action来完成 *** 作。class IndexAction extends Action{function index(){$Article = D(”Article”)}}将文件保存为IndexAction.class.php。OK,现在我们刷新一下首页,如果没有任何的提示,那么恭喜你,数据库连接Model、 Action定义都是正常的。Action中D方法就是调用Model,Article就是我们刚刚定义的那个 ArticleModel.class.php中的Model类~也就是说在定义Model的同时,我们已经完成了对数据库的连接和对数据库表 *** 作的准 备~欢迎分享,转载请注明来源:内存溢出
评论列表(0条)