學習thinkPHP的筆記
thinkPHP的文件結(jié)構(gòu)的介紹
<?php
//確定應用名稱 Home
define('APP_NAME', 'Admin');
//確定應用路徑
define('APP_PATH', './Admin/');
//引用核心文件
require './ThinkPHP/ThinkPHP.php';
項目目錄結(jié)構(gòu)的說明
- Home 前臺應用文件夾
├─Common 項目公共文件目錄
├─Conf 項目配置目錄
├─Lang 項目語言目錄
├─Lib 項目類庫目錄
│ ├─Action Action類庫目錄
│ ├─Behavior 行為類庫目錄
│ ├─Model 模型類庫目錄
│ └─Widget Widget類庫目錄
├─Runtime 項目運行時目錄
│ ├─Cache 模板緩存目錄
│ ├─Data 數(shù)據(jù)緩存目錄
│ ├─Logs 日志文件目錄
│ └─Temp 臨時緩存目錄
└─Tpl 項目模板目錄
TP訪問項目的五種方式
- PATHINFO模式
- 例:
http://域名/項目名/入口文件/模塊名/方法名/鍵1/值1/鍵2/值2
- 普通模式
- 例:
http://域名/項目名/入口文件?m=模塊名&a=方法名&鍵1=值1&鍵2=值2
- REWRITE模式
- 例:
http://域名/項目名/模塊名/方法名/鍵1/值1/鍵2/值2
- 兼容模式
- 例:
http://域名/項目名/入口文件?s=模塊名/方法名/鍵1/值1/鍵2/值2
- 傳參模式
- 例:
http://域名/項目名/入口文件/方法名/方法的參數(shù)1/方法的參數(shù)2
關于TP的數(shù)據(jù)庫操作
<?php
//以下是連接數(shù)據(jù)庫的兩種方式
//$m=new Model('user');
$m=M('user');
//以下是查詢操作
//選取所有數(shù)據(jù)
$arr=$m->select();
//獲取id號為2的單條數(shù)據(jù)
$getOne=$m->find(2);
//附加條件的字段查詢
$getZiduan = $m->where('id=2')->getField('userName');
//條件查詢,大于
$data['id']=array('GT',6);
$arr=$m->where($data)->select();
//條件查詢,與和或
//與
$getZiduan = $m->where('id=2 and userName="jk"')->select();
//或
$data['id']=1;
$data['_logic']='or';
$getOr = $m->where($data)->select();
//以下是刪除操作
//單條刪除
$m->where('userName="gogogo"')->delete(); //返回的是影響的行數(shù)
//刪除所有數(shù)據(jù)
$m->delete();
// 以下是增加數(shù)據(jù)操作
$data['userName']='myName';
$data['sex']=0;
$m->add();
條件查詢中關于邏輯參數(shù)
| 參數(shù) |
作用 |
| EQ |
等于 |
| NEQ |
不等于 |
| GT |
大于 |
| EGT |
大于等于 |
| LT |
小于 |
| ELT |
小于等于 |
| LIKE |
模糊查詢 |
區(qū)間查詢
$data['id']=array(array('GT',5),array('lt',8)); //表示SELECT * FROM `tp_user` WHERE ( (`id` > 5) AND (`id` < 8) )
$data['id']=array(array('GT',5),array('lt',8),'or');//表示SELECT * FROM `tp_user` WHERE ( (`id` > 5) OR (`id` < 8) )
$data['id']=array(array('GT',5),array('lt',8),'or');
$data['userName']=array(array('LIKE','%2%'),array('LIKE','%啊%'),'or');
//以上兩句表示SELECT * FROM `tp_user` WHERE ( (`id` > 5) OR (`id` < 8) ) AND ( (`userName` LIKE '%2%') OR (`userName` LIKE '%啊%') )
- 實際上區(qū)間查詢就是兩個以上的數(shù)組組成的條件的組合,讓TP自動生成查詢語句??梢陨弦粋€點中提到的邏輯參數(shù)進行選擇
統(tǒng)計查詢
$data['userName']=array('LIKE','%啊%');
$arr=$m->where($data)->count();
//SELECT COUNT(*) AS tp_count FROM `tp_user` WHERE ( `userName` LIKE '%啊%' ) LIMIT 1
$arr=$m->max('id');
//SELECT MAX(id) AS tp_max FROM `tp_user` LIMIT 1
$arr=$m->avg('id');
//SELECT AVG(id) AS tp_avg FROM `tp_user` LIMIT 1
| 參數(shù) |
作用 |
| count |
獲取個數(shù) |
| max |
獲取最大值 |
| min |
獲取最小值 |
| avg |
獲取平均數(shù) |
| sum |
獲取總和 |
數(shù)據(jù)庫的連貫操作
| 參數(shù) |
作用 |
| where |
查詢條件的定義 |
| order |
排序 |
| limit |
限制查詢結(jié)果 |
| field |
定義查詢的字段 |
| table |
定義要操作的數(shù)據(jù)表名稱 |
| group |
group操作 |
| having |
having操作 |
SQL直接查詢(即不使用TP提供的任何方法)
$m=M(); //創(chuàng)建一個不指向任何表的模塊
$arr=$m->query('select * from tp_user where id>5'); //如果成功返回數(shù)據(jù),不成功返回false
var_dump($arr);
$arr=$m->execute("insert into tp_user(userName) values('kair')"); //成功就返回影響函數(shù),否則返回false
var_dump($arr);
向視圖文件中傳遞參數(shù)
首先,在Tpl文件下創(chuàng)建對應控制器函數(shù)名的html文件,例子:
lib/Action/IndexAction.php
<?php
class IndexAction extends Action
{
public function index()
{
$m=M('user');
$data['id']=array('GT',6);
$arr=$m->where($data)->select();
$this->assign('data',$arr);
$this->display();
}
}
tpl/User/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title</title>
</head>
<body>
<table border="1" width="500" align='center'>
<tr>
<th>id</th>
<th>username</th>
<th>sex</th>
<th>操作</th>
</tr>
<volist name='data' id='vo'>
<tr>
<td><{$vo.id}></td>
<td><{$vo.userName}></td>
<td><{$vo.sex}></td>
<td><a href="#">刪除</a> | <a href="#">修改</a></td>
</tr>
</volist>
</table>
</body>
</html>
關于TP的項目設置
- 通過修改生成目錄下的config文件來達到項目修改的目的
| 設置 |
參數(shù) |
例子 |
作用 |
| URL_PATHINFO_DEPR |
任意合法符號 |
/ |
修改URL分隔符 |
| TMPL_L_DELIM |
任意符號 |
<{ |
修改左邊界符 |
| TMPL_R_DELIM |
任意符號 |
}> |
修改右邊界符 |
| DB_TYPE |
所要關聯(lián)數(shù)據(jù)庫的類型 |
mysql |
設置數(shù)據(jù)庫關聯(lián)的類型 |
| DB_HOST |
主機 |
localhost |
設置主機 |
| DB_NAME |
數(shù)據(jù)庫名 |
thinkphp |
設置數(shù)據(jù)庫 |
| DB_USER |
用戶名 |
數(shù)據(jù)庫的用戶名 |
設置用戶名 |
| DB_PWD |
密碼 |
數(shù)據(jù)庫的密碼 |
設置密碼 |
| DB_PORT |
端口 |
3306 |
設置端口 |
| DB_PREFIX |
表前綴 |
tp_ |
設置表前綴 |
| SHOW_PAGE_TRACE |
true |
false |
開啟頁面跟蹤 |
| DB_DSN |
數(shù)據(jù)庫的DSN參數(shù) |
mysql://root:@localhost:3306/thinkphp |
通過DSN方式訪問數(shù)據(jù)庫 |
| TMPL_TEMPLATE_SUFFIX |
想要設置的后綴名 |
.html / .php |
控制器讀取模板的后綴名將會改變 |
<?php
return array(
//'配置項'=>'配置值'
'TMPL_L_DELIM'=>'<{', //修改左定界符
'TMPL_R_DELIM'=>'}>', //修改右定界符
'DB_TYPE' =>'mysql', //設置數(shù)據(jù)庫類型
'DB_HOST'=>'localhost', //設置主機
'DB_NAME'=>'thinkphp', //設置數(shù)據(jù)庫
'DB_USER'=>'root', //設置用戶
'DB_PWD'=>'', //設置密碼
'DB_PORT'=>'3306', //設置端口
'DB_PREFIX'=>'tp_', //設置表前綴
'SHOW_PAGE_TRACE'=>TRUE //頁面跟蹤
);