ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操 作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理.采用 PDO方式,目前包含了Mysql.SqlServer.PgSQL.Sqlite等数据库的支持. 如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式. 一.配置文件定义 二.方法配置 三.模型类定义 配置参数参考 一.配置文件定义 常用的配置方式是在应用目录或者模块目录下面的…
thinkPHP如果要对数据库操作,一般来说首先要做的是在配置文件中链接数据库,然后用M方法实例化一张表,然后就是对表的操作了 可以开启调试功能查看程序执行的sql语句: 1.开启调试功能(默认是已经开启过的) define('APP_DEBUG',true) 2.设置配置文件,开启页面trace(注意:如果没有在控制器里输出模板,不会出现调试小图标,即要写:$this->display();) 'SHOW_PAGE_TRACE'=>TRACE 查询操作:例如: (1)基本的where语句查询…
存储过程 5.0支持存储过程,如果我们定义了一个数据库存储过程 sp_query ,可以使用下面的方式调用: $result = Db::query('call sp_query(8)'); 返回的是一个二维数组,也可以使用参数绑定,例如: $result = Db::query('call sp_query(?)',[8]); // 或者命名绑定 $result = Db::query('call sp_query(:id)',['id'=>8]); 数据集 数据库的查询结果也就是数据集,默认…
假如你是一位thinkphp的使用者,想必你会觉得thinkphp操作数据库非常方便.现在在你面前有一个非常小的作业,小到完全没有必要用thinkphp去完成它.但是你又觉得不用thinkphp的话,操作数据库非常麻烦.这时,你陷入了左右为难的境况.那么,下面我要分享的这个数据库操作类,可能会帮助你摆脱这种困境.这个数据库操作类虽然不能说是完全从thinkphp里扣出来的,但多多少少能看到thinkphp当年的影子,使用起来非常类似,真是方便好用啊.好了,马上来演示一下基本用法吧. 首先来演示一…
一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: public function testdb(){ $obj=M("User"); dump($obj); } 此时浏览器输出: object(Model)#5 (20) { ["_extModel:private"] => NULL ["db:protected"] =>…
视图查询 视图查询可以实现不依赖数据库视图的多表查询,并不需要数据库支持视图,例如: Db::view('User','id,name') ->view('Profile','truename,phone,email','Profile.user_id=User.id') ->view('Score','score','Score.user_id=Profile.id') ->where('score','>',80) ->select(); 生成的SQL语句类似于: 注意,…
查询方法 条件查询方法 where 方法 可以使用 where 方法进行 AND 条件查询: Db::table('think_user') ->where('name','like','%thinkphp') ->where('status',1) ->find(); 多字段相同条件的 AND 查询可以简化为如下方式: Db::table('think_user') ->where('name&title','like','%thinkphp') ->find();…
基本使用 可以直接使用数据库运行原生SQL操作了,支持 query (查询操作)和 execute (写入操作)方法,并且支持参数绑定. Db::query('select * from think_user where id=?',[8]); Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']); 也支持命名占位符绑定,例如: Db::query('select * from think_us…
查询事件 查询事件(V5.0.4+) 从 5.0.4+ 版本开始,增加了数据库的CURD操作事件支持,包括: 查询事件仅支持 find . select . insert . update 和 delete 方法. 注册事件 使用下面的方法注册数据库查询事件 Query::event('after_insert','callback'); Query::event('before_select',function($options,$query){ // 事件处理 return $result;…
聚合查询 在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数.所有用户的最大积分.用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括: 用法示例: 获取用户数: Db::table('think_user')->count(); // 助手函数 db('user')->count(); 或者根据字段统计: Db::table('think_user')->count('id'); // 助手函数 db('user')->coun…