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

xiaoxiao2021-02-28  106

本篇包含前端和后台,是博主在实际开发中遇到的一些“本应该是这样却不是这样的问题”: 一、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();

转载请注明原文地址: https://www.6miu.com/read-31426.html

最新回复(0)