[转]赵桐正thinkphp教程笔记
原文:?,有修改 常用配置 ? ? 常用配置config.php: '配置值'
'URL_PATHINFO_DEPR' => '/',
);
? ? 在config.php中配置: 'DB_TYPE'=>'mysql',
'DB_HOST'=>'localhost',
'DB_NAME'=>'thinkphp',
'DB_USER'=>'root',
'DB_PWD'=>'',
'DB_PORT'=>'3306',
'DB_PREFIX'=>'tp_',
'DB_DSN'=>'mysql://root:root@localhost :3306/thinkphp',
? ? 连接:需要在方法中通过new Model(表名)的形式操作数据库 = Model('User'=->select();
=M('User'=->select();
通过?$m->getDbError(); 可以输出数据库的错误信息 读取数据 ? ? 对数据的读取 Read = Model('User'=M('User'<span style="color: #008000;">//<span style="color: #008000;">select
<span style="color: #800080;">$m->select();<span style="color: #008000;">//<span style="color: #008000;">获取所有数据,以数组形式返回 //find //getField(字段名)//获取一个具体的字段值
? ? 对数据的添加 Create?? = Model('User'=M('User'字段名=值
-> 'name' = 'tim' = ->
删除数据 ? ? 对数据的删除 =M('User' = ->delete(2);
<span style="color: #800080;">$ret = <span style="color: #800080;">$m->where('id=2')->delete(); <span style="color: #008000;">//<span style="color: #008000;">与上面效果相同,也是删除id为2的数据//返回值$ret是受影响行数 更新数据 ? ? 对数据的更新 =M('User'['id']=1['username']='ztz2' = ->save(
? ? a、字符串 =->where("sex=0 and username='gege'")->find();
? ? b、数组 ['sex']=0['username']='gege'=->where()-><span style="color: #008000;">//<span style="color: #008000;">注意:这种方式默认是and的关系,如果使用or关系,需要添加数组值
<span style="color: #800080;">$data['sex']=0<span style="color: #000000;">; <span style="color: #800080;">$data['username']='gege'<span style="color: #000000;">; <span style="color: #800080;">$data['_logic']='or'; 2、表达式查询方式
['id']=('lt',6=->where()-><span style="color: #008000;">//<span style="color: #008000;">其他比较操作符
//EQ 等于 //NEQ不等于 //GT 大于 //EGT大于等于 //LT 小于 //ELT小于等于 //LIKE 模糊查询 <span style="color: #800080;">$data['username']=<span style="color: #0000ff;">array('like','%ge'<span style="color: #000000;">); <span style="color: #008000;">//<span style="color: #008000;">NOTLIKE <span style="color: #800080;">$data['username']=<span style="color: #0000ff;">array('notlike','%ge%'); <span style="color: #008000;">//<span style="color: #008000;">notlike中间没有空格 //注意:如果一个字段要匹配多个通配符 <span style="color: #008000;">//<span style="color: #008000;">BETWEEN //IN //NOT IN
['id']=(('gt',4),('lt',10)); 4) AND (`id` < 10) )
<span style="color: #800080;">$data ['id']=<span style="color: #0000ff;">array(<span style="color: #0000ff;">array('gt',10),'or') <span style="color: #008000;">//<span style="color: #008000;">关系就是or的关系<span style="color: #800080;">$data['name']=<span style="color: #0000ff;">array(<span style="color: #0000ff;">array('like','%2%'),<span style="color: #0000ff;">array('like','gege','or');
avg
sum
?? ?a、query 主要数处理读取数据的 ? ? 成功返回数据的结果集,失败返回boolean false ==->query("select * from t_user where id >50"
?? ??? ?成功返回影响行数,失败返回boolean false ==->execute("insert into t_user(`username`) values('ztz3')");
?? ?1.where?帮助我们设置查询条件 ?? ?2.order?对结果进行排序 =->order('id desc')->=->order(('id'=>'desc','sex'=>'asc'))->select();
limit(2,5'2,5'10)
field('username as name,id'('username'=>'name','id''id',)
?? ?6.group ?? ?7.having ? ? 8.other alias
page
*
union*
distinct
lock
cache
relation
validate
auto
filter
scope*
?a、display ??1.display中没有参数 ->display();
->->display('index2'<span style="color: #800080;">$this-><span style="color: #000000;">display(其他文件夹下的模板文件);
<span style="color: #800080;">$this->display('Public:error');<span style="color: #008000;">//<span style="color: #008000;">注意,仅仅需要在Tpl下有Public文件夹以及其中的error.html即可,不需要一定有Public模块 <span style="color: #800080;">$this->display(其他主题下的 文件夹下的 模板文件);<span style="color: #008000;">//<span style="color: #008000;">需要开启主题支持 <span style="color: #800080;">$this-><span style="color: #000000;">display(一个url路径);
???获得模板文件中的内容,以字符串形式返回 =->fetch('Public:error');
???不需要模板文件,可以直接输出模板内容 =->fetch('Public:error'=('h1','i',->show();
->assign('name','赵桐正'<span style="color: #008000;">//<span style="color: #008000;">or
<span style="color: #800080;">$this->name='赵桐正2'<span style="color: #000000;">; <span style="color: #800080;">$this->display();
更换模板变量规则,修改配置项: 'TMPL_PARSE_STRING'=>(
'__CSS__'=>__ROOT__.'/Public/Css','__JS__'=>__ROOT__.'/Public/Js',,
??1.标量输出 ??2.数组输出 {[1['k2'.k1}
{:->k}
{.get.id}
? {|<span style="color: #008000;">//<span style="color: #008000;">生成的编译后文件是
<?php <span style="color: #0000ff;">echo (<span style="color: #008080;">strtoupper(<span style="color: #800080;">$name)); ?> <span style="color: #008000;">//<span style="color: #008000;">如果值不是函数的第一个参数,可以用###占位 ? {|='这里是默认值'}
+ - * / % ++ --
{++}
导入CSS和JS文件 ? ? ?? ?1、css link,?js src
<span style="color: #008000;"> <span style="color: #0000ff;"><<span style="color: #800000;">import <span style="color: #ff0000;">type<span style="color: #0000ff;">='js' <span style="color: #ff0000;">file<span style="color: #0000ff;">='Js.my' <span style="color: #ff0000;">basepath<span style="color: #0000ff;">='./Other'<span style="color: #0000ff;">/>
?1、if <span style="color: #0000ff;">< <span style="color: #800000;">if <span style="color: #ff0000;">condition<span style="color: #0000ff;">='$age <span style="color: #ff0000;">lt 18'<span style="color: #0000ff;">><span style="color: #000000;">未成年 <span style="color: #0000ff;"><<span style="color: #800000;">elseif <span style="color: #ff0000;">condition<span style="color: #0000ff;">='$age <span style="color: #ff0000;">eq 18'<span style="color: #0000ff;">/><span style="color: #000000;"> 青春年少 <span style="color: #0000ff;"><<span style="color: #800000;">else <span style="color: #0000ff;">/><span style="color: #000000;"> 成年 <span style="color: #0000ff;"></<span style="color: #800000;">if<span style="color: #0000ff;">> ? ? 常用的比较操作符有:
<span style="color: #008000;">//<span style="color: #008000;"><
<span style="color: #000000;">lt <span style="color: #008000;">//<span style="color: #008000;">== <span style="color: #008000;">//<span style="color: #008000;"><= <span style="color: #008000;">//<span style="color: #008000;">>= <span style="color: #008000;">//<span style="color: #008000;">!= <span style="color: #008000;">//<span style="color: #008000;">=== <span style="color: #008000;">//<span style="color: #008000;">!== ?2、switch < name='number'>
< value='1'>一个和尚挑水吃>
< value='2'>两个和尚台水吃>
< value='3'>三个和尚没水吃>
</>>
?1.for
<{$j}<abc
?1、比较标签
??in 在这些数字里面不在这些数字的范围内
在这些数字里面不在这些数字的范围内
{$n}在1-10之间{$n}不在1到10之间
??标签来判断模板变量是否已经赋值: m有赋值m没有赋值
??empty标签判断模板变量是否为空: n为空赋值n有值
??判断常量是否已经定义 ?6.Define ??在模板中定义常量 ?7.Assing ??模板中变量赋值 ?8.在模板中直接使用PHP代码 模板包含? <span style="color: #0000ff;">< <span style="color: #800000;">include <span style="color: #ff0000;">file<span style="color: #0000ff;">="header"<span style="color: #ff0000;"> title<span style="color: #0000ff;">="ThinkPHP框架"<span style="color: #ff0000;">keywords<span style="color: #0000ff;">="开源WEB开发框架"<span style="color: #0000ff;">/><span style="color: #008000;"> <span style="color: #0000ff;">< <span style="color: #800000;">include <span style="color: #ff0000;">file<span style="color: #0000ff;">='file1,file2' <span style="color: #0000ff;">/>模板渲染? ?1、自动开启模板渲染 设置配置文件? 'LAYOUT_ON'=>,
???如果在摸一个具体模板中不希望使用渲染模板,可以在页首添加{__NOCONTENT__} ?2、不开启自动模板渲染可以在每一个具体页面的页首添加?
??在渲染模板文件中也可以使用其他模板文件的内容
这里是渲染页面!!!
空模块和空操作? ?1、空操作,在action文件中定义? _empty(->show(" 不存在 返回首页"
?2.空模块 EmptyAction =M('City'=->->assign('list',=->display("City:"
前置操作和后置操作 ? ? ? ? ?? 1、前置操作: _before_操作名2、后置操作: _after_操作名 URL规则 ?? ?1、默认是区分大小写的? ? ??2、如果我们不想区分大小写可以改配置文件 'URL_CASE_INSENSITIVE'=>,
? ? 3、如果模块名为 UserGroupAction ?那么url找模块就必要要写成 http:
4、如果'URL_CASE_INSENSITIVE'=>false ?那么url也可以写为 http:
URL伪静态 'URL_HTML_SUFFIX'=>'html|shtml|xml',
URL路由 ?1、启动路由 ?要在配置文件中开启路由支持 ?2、使用路由 ?(1).规则表达式配置路由 'my'=>'Index/index',
':id/:num'=>'Index/index',
'year/:year/:month/:date'=>'Index/index',
'year/:yeard/:monthd/:dated'=>'Index/index',
'my/:id$'=>'Index/index',
?(2).正则表达式配置路由 '/^year/(d{4})/(d{2})/(d{2})/'=>'Index/index?year=:1&month=:2&date=:3'
?(3)、注意事项: ?1).越复杂的路由越往前面放 'URL_ROUTE_RULES'=>'my/:year/:month:/:day'=>'Index/day','my/:idd'=>'Index/index','my/:name'=>'Index/index',
2).可以使用$作为完全匹配的路由规则 'URL_ROUTE_RULES'=>'my/:idd$'=>'Index/index','my/:name$'=>'Index/index','my/:year/:month:/:day$'=>'Index/day',
3).用正则匹配的方式 'URL_ROUTE_RULES'=>'/^my/(d+)$/'=>'Index/index?id=:1','/^my/(w+)$/'=>'Index/index?name=:1','/^my/(d{4})/(d{2})/(d{2})$/'=>'Index/day?year=:1&month=:2&day=:3',
__ROOT__:网站根目录地址 __APP__: 当前应用(入口文件)地址 __MODULE__:当前模块的URL地址 __CONTROLLER__:当前控制器的URL地址 __ACTION__:当前操作的URL地址 __SELF__:当前URL地址 __INFO__:当前的PATH_INFO字符串 __EXT__:当前URL地址的扩展名 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |