解决 nginx 服务器下使用 thinkphp 框架不支持 pathinfo 的问题。 更改 php.ini 找到: cgi.fix_pathinfo=0 改为: cgi.fix_pathinfo=1 修改 nginx 对应配置文件,在 server 段加上 location / { index index.php; #thinkphp Rewrite if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$1 last; } } location ~ \.php($|/){ #配置PHP支持PATH_INFO进行URL重写 set $script $uri......
如果你是一名使用过多种框架的php程序员,你一定见过这样的查询语句: $result = $mysqlDb->limit(’0,10′)->order('id desc')->select(); 上面的查询语句,连续使用->操作符进行操作,并最终返回一个查询结果,那么这是如何实现的呢。 我们来简单分析一下: -> 操作符用来访问对象,上面的语句一共使用了3次 -> 操作符,而最后一次返回的是查询结果,这说明,前2次 -> 访问后,返回的应该是一个对象,因为在php......
thinkphp更新数据库的五种方法。 第一种方法: $模型->where('id=1')->save($data); 第二种方法: $模型->where('id=1')->data($data)->save(); 第三种方法: $模型->create(); $模型->save(); 表单中必须包含一个以主键为名称的隐藏域 第四种方法: $模型->where('id=5')->setField('name','thinkphp'); $模型->where('id=5')->setField(array('name','email'),array('TP','TP@163.com')); //......
thinkphp 3.1.3貌似没有内置的截取中文字符串的方法,找了半天没找到,下面作者自己加了一个截取中文字符串的函数,具体代码如下,有需要的朋友可以参考下。 以下代码加在项目所在目录的Common目录下的common.php文件里面的,比如作者的就是www/Common/common.php文件,当然你也可以直接加到thinkphp的Common/common.php文件里面,这样就所有的项目都可以使用了。 function truncate_cn($string,$length=0,$ellipsis='…',$sta......
使用thinkphp做开发的阶段,程序会经常被修改,这个时候如果不关闭缓存会造成很多不必要的麻烦,比如对表结构做一下修改,必须要删除数据结构缓存,才能看到相应的效果。所以为了开发的方便,可以把thinkphp默认的缓存给禁掉,待上线后再开启。 该如何关闭thinkphp的缓存呢?有下面几种方法可参考: (1)在配置文件中关闭缓存 在你的配置文件config.php文件中加上如下两句: 'TMPL_CACHE_ON' => false,//禁止模板编译缓存 ......
用过smarty做过php开发的朋友应该都知道在smarty模板里面判断foreach循环是否是最后一个可以用$smarty.foreach.name.last来判断循环是否到了最后一条记录,在thinkphp中如何判断呢?在thinkphp的模板中常见的循环是volist,而volist的各种属性中并没有直接判断这个的,下面就说下在thinkphp volist中是如何判断最后一条记录的。 举例代码如下,意思自己去体会吧。 <volist name='lists' id='list'> <li <if condition="$i eq ......
使用thinkphp做开发的过程中的一些技巧总结,以后发现了还会继续补充,也欢迎更多的朋友在下面留言补充。 (1)不要在模板中直接使用{$_GET.id}或者{$Think.get.id},因为{$_GET.id} {$Think.get.id} 这两种方式都没有任何过滤,容易被XSS。建议使用I方法,即:{:I('get.id')} (2)在thinkphp中如果需要获取数据库中某个表的字段该怎么办呢?示例如下: $user=M('user'); $fields=$user->getDbFields(); 结果将返回一个由......
thinkphp 打印最后一条sql语句是一个很常见的用法,在调试代码的过程中经常会用到,由于记性不太好,特在此备注,方便以后使用。 下面还是通过示例记录 $form=M('user'); $result=$form->where(array('username'=>'www.phpernote.com'))->select(); //下面就是打印这条sql语句的方法 $form->getLastSql();
在做项目的过程中,需要用到like关键字来组合查询条件,下面作者将在thinkphp中使用到的 like 查询做一下分享。 这里主要通过举例来说明用法: $userForm=M('user'); $where['name']=array('like','phpernote%'); $userForm->where($where)->select(); 这里的like查询即为:name like 'phpernote%' $where['name']=array('like',array('%phpernote%','%.com'),'OR'); 这里的like查询即为:name like '%phpernote%' or......
自动验证与自动填充是在使用thinkphp时经常用到的功能,但偶尔会碰到到自动验证与自动填充不起作用的情况,本文就thinkphp 自动验证与自动填充无效可能的原因做一些分析并提出相应的解决办法。 (1)create() 方法有问题 thinkphp 自动验证与自动填充是在创建数据对象 create() 时实现的,因此自动验证与自动填充无效很大程度上与 create() 有关。 create 方法语法如下: create(mixed data, string type) data 表示接受的数......
经常看到有人问到findAll的返回数据类型是什么之类的问题,以及出错了不知道什么原因的情况,其实还是没有熟悉thinkphp内置的调试手段和方法,抛开IDE本身自带的调试方式不说,如果你正在用或者打算用thinkphp开发的话,那么下面一些和调试thinkphp程序相关的方法你是应该要了解和掌握的。 1、在项目配置文件里面打开调试模式DEBUG_MODE,这样能够让你发现大部分的错误原因 。可能影响验证码的输出。 2、如果不想使用调试模式,......
thinkphp中execute()和query()方法都可以在参数里直接输入SQL语句。不同的是execute()通常用来执行insert或update等SQL语句,而query常用来执行select等语句。execute()方法将返回影响的记录数,如果执行SQL的select语句的话,返回的结果将是表的总记录数。 下面举几个具体的例子说明一下: $model=M("MyTable"); $result=$model->execute('select * from MyTable'); //将返回总行数(数字) query()方法将返回数据集,如果......
thinkphp为一些常用的操作定义了快捷方法,这些方法具有单字母的方法名,具有比较容易记忆的特点。非常有意思的是,这些快捷方法的字母包含了ADSL字母,所以我们称之为ADSL方法。A、D、S、L、C、F、U、I 这几个快捷方法都在 /thinkphp/Common/functions.php 这个文件中,下面我分别说明一下他们各自的功能和用法。 A() 加载Action类 D() 加载Model类 S() 全局缓存配置 L() 获取语言定义 C() 获取配置值 F() 快速文件数据......
使用 thinkphp 开发的应用的 url 中通常都会带个 index.php ,如果我们需要伪静态或者做 SEO 优化的时候,这个是非常不好看也没有意义的。那么我们该如何去除 thinkphp 应用 url 中的 index.php 呢? 对于这个问题我们可以通过URL重写的方式解决,当然这个是需要服务器开启 URL_REWRITE 模块才可以的。所以进行下面的步骤前请确定你的服务器是否已经开启了或者是否能开启 URL_REWRITE 。 (1)如果没有开启 URL_REWRITE,则你需......
最近刚刚开始学习 thinkphp 这套框架,对于thinkphp的强大真的是让哥叹为观止,其抗压能力,性能如何这个暂不讨论,下面就分享一下 thinkphp 强大的查询功能,当然这里只是抛砖引玉而已。 一、带where条件的普通查询 1、字符串形式 $user=M('user'); $list=$user->where('id>5 and id<9')->select(); $list=$user->where($data)->select(); 2、数组形式 $user=M('user'); $list=$user->where(array('username'=>'ww......
thinkphp内置的模板引擎是一个自主创新的XML编译性模板引擎,下面通过一个案例分享一些thinkphp内置的模板引擎常用的模板标签的用法,包括变量输出、循环、判断、比较等,这些都是比较基础的用法,无法包括thinkphp内置模板引擎的全部标签和特性。 (1)下面是控制器 IndexAction 类的源码 <?php class IndexAction extends Action{ public function index() { $_SESSION['name'] = 'ThnkPHP Session'; ......
刚刚入手学习 thinkphp 框架,下面将 thinkphp 的 Action 控制器中可以直接使用的系统常量做一下总结,方便记忆以后直接使用。 THINK_PATH // thinkphp 系统目录 APP_PATH // 当前项目目录 APP_NAME // 当前项目名称 MODULE_NAME //当前模块名称 ACTION_NAME // 当前操作名称 TMPL_PATH // 项目模版目录 LIB_PATH // 项目类库目录 CACHE_PATH // 项目模版缓存目录 CONFIG_PATH //项目配置文件目录 LOG_PATH // 项目日志......
在 thinkphp 模板引擎可以不需要赋值给某个模板变量而直接输出一些系统变量和系统常量、以及系统特殊变量。对于系统变量的输出必须以$Think. 打头,并且仍然可以支持使用函数。下面就分别做一下分享。 (1)系统变量:在模板中输出系统变量:包括server、env、session、post、get、request、cookie {$Think.server.script_name} // 输出$_SERVER变量 {$Think.session.session_id|md5} // 输出$_SESSION变量 {$......
thinkphp 3.1.2 模板跳转等待的时间默认只有3秒,这在开发中如果想看错误信息的时候是非常让人头痛的,虽然可以在页面显示的通过 $this->assign('waitSecond','1') 自定义页面跳转等待时间,但总会感觉很麻烦,有没有一种方法可以将这个默认的3秒改的时间更长点吗?下面就教你如何将这个时间定义为你想要等待多长的时间,在 thinkphp 3.1.2 中,在系统目录里面的 \Lib\Core\ 找到 Action.class.php 这个文件,在里面找到下面 dispa......