thinkphp开发中你需要注意的一些小问题

本篇包含前端和后台,是博主在实际开发中遇到的一些“本应该是这样却不是这样的问题”:


一、checkbox设置勾选:
$(...).attr("checked","checked");


但是并没有效果,这时候应该使用:
$(...).prop ("checked","checked");
二、很多人判断一条sql是否执行成功,喜欢用下面的语句:
    $result = M(“user”)->where('uid = 2')->setField('email','Jack@163.com');
    if($result){
        echo '数据更新成功!';
    }else{
        echo '数据更新失败!';
    }


但是有的时候明明我们已经修改成功,却会打印出更新失败,为什么呢,因为setField成功时会返回受影响的行,比如


你setField一个人sex是0,如果数据库里他的sex本来就是0,这时候setField会返回0,因为他没有改变任何一行,所


以if($result)的结果当然是false,更新失败。这时候应该改为:
    $result = M(“user”)->where('uid = 2')->setField('email','Jack@163.com');
    if($result){
        echo '数据更新成功!';
    }else{
        echo '数据更新失败!';
}
    




    $result = M(“user”)->where('uid = 2')->setField('email','Jack@163.com');
    if($result){
        echo '数据更新成功!';
    }else{
        echo '数据更新失败!';
    }


    if($result !== false){
        echo '数据更新成功!';
    }else{
        echo '数据更新失败!';
    }
随便一提,===与==相比,还要求数据类型相同。


三、
       foreach ($users as $u) {
            $u['a'] = 1;
        } 


这样是不能再foreach内部修改$u的,如果要修改,需要加上&
       foreach ($users as &$u) {
            $u['a'] = 1;
        } 


四、在Controller中用M可以直接操作数据库,但是如果要使用Model的方法操作数据库,需要使用D。
M('Home\Model\User')->getAll();
会报错 getAll()方法不存在。
D('Home\Model\News')->getAll();


五,就算是display:none 的input标签的值也可以submit,这个常常用来在用户输入的界面绑定一些其他的数据,例如


用户id。


六、hasownproperty会判断一个js 对象是否包含某个属性或者方法,但是不能判断原型链,所以判断一个js是否包含


某个熟悉使用in
var a  = new myName
'setName' in a;


随便一提js 中in还可以用来遍历数组。


七、
    $i = 1;
    M("Q")->where("id=%d",$i)->find();
下面这样写是正确的,但是如果是字符串,
    $i = "lina";
    M("Q")->where("name=%s",$i)->find();
这样写生成的sql语句是错误的,一定记得给%s加上引号
    $i = "lina";
    M("Q")->where("name='%s'",$i)->find();


八、对于类中的静态变量或者常量,即const和static修饰的变量 ,例如:public static $EPAGE = 15; 不能用 


$this->$EPAGE去访问,要用self
self::$EPAGE


九、tp的构造函数_initialize会自动调用父类的_initialize方法,而php本身的构造函数 __construct ,如果子类和


父类都存在__construct,那么不会自动去调用父类的__construct,如果想使用父类的__construct,需要使用


parent::__construct()。


十、php在new一个类的时候,如果不是当前命名空间的类,需要在前面加上\,例如;
        Vendor('phpexcel.PHPExcel');
        $objPHPExcel = new PHPExcel();
        print_r($objPHPExcel);exit();


会报错  Class 'Admin\Controller\PHPExcel' not found ,就是因为new的时候是在当前命名空间寻找PHPExcel,需


要改成:
$objPHPExcel = new \PHPExcel();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值