thinkphp中遇到的一些问题及解决方法

1::(

Cannot redeclare msubstr() (previously declared in D:\wamp\www\thinkphp\ThinkPHP\Common\common.php:144) D:\wamp\www\thinkphp\ThinkPHP\Extend\Function\extend.php 

该问题表明在提示所在的两个位置重复定义了msubstr()函数,刚开始也是纠结了好久,重复看是否有重复的函数被定义。其实解决办法很简单,只需找到提示中的相应位置,然后注释掉其中的一条既可,问题就解决了。

2:在表单上传的时候,为什么总是抛出“没有选择上传文件”

3:在采用getError函数的时候,总是会提示“非法数据对象”

4:为什么在判断验证码错误的时候,明明验证码输的是正确的,可是还是提示“验证码错误”

5::(

Unsupported operand types D:\wamp\www\xinxi\ThinkPHP\Extend\Library\ORG\Util\Page.class.php 第 52 行.

百度了一下,Unsupported operand types 的意思是数据类型错误,比如某个函数要接收数据类型的,结果你给的是字符串类型,就会发生这样的错误,为了能让读者更好地理解,故贴出一例:$count=$essay->where("code='$code'")->select();

由于select()返回的是一个数组,而分页类中要求返回的是页数,即是一个数据,这样的话就会报错,应该使用count()函数,就可以解决。
6:大家都知道,volist标签用于遍历出数据库里的内容,但是如果只想遍历出一部分,就可以有如下方法
第一种:遍历出一部分内容:可以用
msubstr函数实现只截取一部分字符串,

ThinkPHP有一个内置字符截取函数msubstr()如下:msubstr($str, $start=0, $length, $charset=”utf-8″, $suffix=true) 

$str:要截取的字符串 
$start=0:开始位置,默认从0开始 
$length:截取长度 
$charset=”utf-8″:字符编码,默认UTF-8 
$suffix=true:是否在截取后的字符后面显示省略号,默认true显示,false为不显示 
调用如下
{$vo.title|msubstr=5,5,’utf-8′,false} 解释:截取字符串$vo.title,从第5个字符开始,截取5个,编码,这样就可以实现,还有一种形式,比如有许多条数,如果只想取出几条,就可以在控制器加上如下的条件,
    $db=M('img');
        $img=$db->field('`iid`,`iname`,`idate`,`idescribe`')
            ->order('idate desc')->limit('4')->select();
     这样就实现了只取出几条信息了

6:在关联模型中,如果有错误信息relation方法不存在,则可以从以下几个方面去检查:

(1)模型是否写正确:应写成class ImgModel extends RelationModel,注意这里的Img可以改成你想要的的控制器名(2)在实例化对象的时候要y用D而不是M。(3)数据库的首字母要大些

7:add()失效原因

在进行人员增加的时候,比如说向数据库里面添加新成员,那么可能要添加照片或者简介,如果直接通过post来获取表单中上传的照片名,由于没有设置上传照片的存储位置,并且无法获取照片名,所以无论怎样添加,都将失败,导致add()函数无法正常使用,解决办法就是设置上传的路径,在模型中添加上传的功能,这样就可以实现添加。

8:save()

在进行信息更新的时候,必须要传入一个id号,否则无法进行更新,解决此种问题的方法就是在表单中设置一个隐藏的id号,如<input type="hidden" value="{$data['id']}" name='id'>此时就可以通过post提交获得要进行修改的id,从而能准确地进行数据库的更新。

9:在刚开始的建表的时候,没有想过要加表前缀的,并且一心想着只要在数据库的配置文件里不写上表前缀的配置信息就行了,但是好像事情并不是这么简单的。后来在方法里实例化模型的时候,当连接数据库的时候,总是提示数据库不存在,查了好久的资料,才发现原来tp中如果不配置表前缀的信息时,就默认是think_,然后百度上说加上表前缀的好处:是跟mysql 有关;表前缀像一个数据库的标示  防止表名称冲突;就像一个项目 有多个 用户模块 但是你都想用USER 标注 这样表前缀就起到作用了。然后就慢慢一个一个地加,最后果然解决了,看来有些工作还是不能省啊

10:在图片上传的时候,经常会遇到这样一个问题,那就是即使你选择了上传的图片,但是点击提交的按钮之后,系统还是会提示没有选择上传图片,我最近就是遇到过这个问题,在百度上搜了好久,最后才知道是form表单中没有写上这样一句话:

enctype="multipart/form-data",哎呀,真是罪过

11:在控制器中写图片上传的位置的时候,一定要注意斜杠的位置,比如

$upload->savePath =  './Uploads/Images/';// 设置附件上传目录,如果没有写上Images后面的/的话,就不会找到相应的文件夹。细节位置尤其要注意啊。



转载于:https://my.oschina.net/sunshinewyf/blog/480178

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值