手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年11月的文章

ThinkPHP group count

 如果用sql语句来写group by 再count,这样的sql太容易 了。但由于现在都是在用框架,反而这类sql变得难写了。最近在折腾一个用TP 3框架写的代码,原来代码里写的是:

PHP代码
  1. $count = D('Album')->table(T('albums AS a'))  
  2.                     ->join(T('union AS u') . ' ON u.id=a.union_id')  
  3.                     ->join(T('company AS c') . ' ON c.id=a.store_id')  
  4.                     ->join(T('photo AS p') . ' ON a.id=p.parent_id')  
  5.                     ->field('a.*,u.name AS union_name,c.name as store_name')  
  6.                     //     ->field('count(a.id)')  
  7.                     ->where($where)  
  8.                     ->group('a.id')  
  9.                     ->count();  

看起来好象没有问题,但事实上。出来的结果却并不是你想要的,这个count并不是你要的count,而是每个组的条数。当然你也可以用select()来查出数据,再count($count)一下,但如果数据量过大。这样会崩溃 的。

最终用这样的方法解决了:

PHP代码
  1. $numsQuery = D('Album')->table(T('albums AS a'))  
  2.                     ->join(T('union AS u') . ' ON u.id=a.union_id')  
  3.                     ->join(T('company AS c') . ' ON c.id=a.store_id')  
  4.                     ->join(T('photo AS p') . ' ON a.id=p.parent_id')  
  5.                     ->field('a.*,u.name AS union_name,c.name as store_name')  
  6.                     //     ->field('count(a.id)')  
  7.                     ->where($where)  
  8.                     ->group('a.id')  
  9.                     ->buildSql();  
  10. $nums = D()->table("{$numsQuery} as t")->count();  

算是曲线求国吧。

其实很多人在问这种问题了,但更多的人建议是直接写sql。我这种是不写sql的啦 ~

 

 

Error connecting remote MySQL server [ERROR 1042 (HY000): Can't get hostname for your address]

设置了远程数据库允许IP连接,也设置了bind ip为0.0.0.0 ,但有时候能连,有时候不能连接,而且还设置了是IP连接,报标题所在的错误,即 [ERROR 1042 (HY000): Can't get hostname for your address]。

开始就在想,是不是skip-name-resolve的问题,但因为我不是用host连接的,也不是内部的域名解析的问题。所以开始没注意,但google了之后,还是决定加了skipnameresolve

http://serverfault.com/questions/174242/error-connecting-remote-mysql-server-error-1042-hy000-cant-get-hostname-for
  1. ave MySQL 5.5 Server setup on a windows machine. I am able to connect to the server from console / app running on the same machine but not from a remote machine. While connecting using the command  
  2.   
  3. mysql -h xx.xx.xx.xx --port=3306 -u root -p  
  4. I get error as:  
  5.   
  6. ERROR 1042 (HY000): Can't get hostname for your address  
  7. Have tried putting entry of client ip in server's etc\hosts file as  
  8.   
  9. <client-ip>  <client-hostname>  
所有的回答都指向了skip-name-resolve
XML/HTML代码
  1. I believe this is to do with the fact that MySQL tries to establish the DNS name associated with your IP address on connect. See here for more information at the MySQL site.  
  2.   
  3. You have two options:  
  4.   
  5. 1) Fix the connecting machine's reverse DNS. Since you've already added the machine to the hosts file, this might be unnecessary. You should also issue a FLUSH HOSTS statement on the MySQL server. See the same link above for more information about this.  
  6.   
  7. 2) Run MySQL with the '--skip-name-resolve' option. However, if you do this, you won't be able to use DNS names in GRANT statements. Instead you'll be restricted to using IP addresses.  
  8.   
  9. 2.1) or put in my.ini :  
  10.   
  11. [mysqld]  
  12. skip-name-resolve  
  13. I'd recommend (1) if you can.  
  14.   
  15. Hope this helps.  
然后也确实解决了这个问题。记录一下
 
 

 
 

Tags: mysql

宁可错杀3000,不可放走一个

看到这个,应该明白了吧
 

 delete from sablog_comments where visible =0 and content REGEXP '^[0-9a-zA-Z]{6} ' 

 
定期执行一下吧。NND

apache 2.2升到2.4的小坑

 2.2升到2.4的小坑应该就出在权限上了

具体查看:https://httpd.apache.org/docs/current/upgrading.html
即,凡是遇到Order allow,deny allow from all等与Order相关的,最好看一下上面的链接。
比如我们用rewrite的时候,都是
XML/HTML代码
  1. Options Indexes FollowSymLinks 
  2. AllowOverride All  
  3. Order allow,deny  
  4. allow from all  

在2.4下面,上面的代码不报错,但不起作用。如果你的目录下面有.htaccess文件,那么,网站是打不开的,上面的代码改成

XML/HTML代码
  1. <Directory /var/www/>  
  2.     Options Indexes FollowSymLinks  
  3.     AllowOverride All  
  4.     Require all granted  
  5. </Directory>  
OK,再次打开就正常了

 

如何教孩子掌握正确的学习方法

一、学习的“三要素”:
    家长在教育孩子时,首先要规范其行为,养成良好的学习习惯和行为。你要用1个月的时间要你的孩子必须养成以下习惯:
    1、在上新课之前有效地先预习将要学的课文。
    2、在做作业之前必须要孩子先复习后再做作业。
    3、在孩子做完作业之后再叫孩子将做作业用了多少时间记录下来。
二、家长做好“八大环节”的管理:
    1、计划管理:要让孩子制定好整个学习计划(什么时间学什么的计划表)。
    2、预习管理:要让孩子进行课前预习,找到不明白的,并在预习笔记本上记下重点和难点,上课时重点解决这些重点和难点。预习的时间不要太长,一般只需7-10分钟找到重点和难点,并记录下来就行了。
    3、听课管理:家长要同孩子沟通,不要讨厌某某老师,喜欢某某老师,导致偏科。听课要跟着老师思路走,将自己预习记录本上所记的重点和难点听懂并记忆在脑子里。
    4、复习管理:一是让孩子闭目回想老师当天讲了些什么。二是看书本复习。三是让孩子复述课文(阅读课文和讲课文自己讲给自己听)。每隔一段时间(20天左右)要复习才能记牢固。
    5、作业管理:在做作业之前必须要孩子先复习后再做作业。要做到:
        ⑴不复习不作业:做作业前必须先复习。
        ⑵不计时不作业:做作业用了多少时间一定要让孩子记下来。
        ⑶不检查不作业:作业做完一定要让孩子自己检查作业有无借漏。
        ⑷不小结不作业:作业做完一定要让孩子写小结,学到了什么。
        在孩子做完作业之后在叫孩子将做作业用了多少时间记录下来。并要限时学习,学习时间不要太长。
    6、错题管理:要让孩子准备一个“错题管理本”将做错了的题,错的记录上后,写明错的原因,再将正确的解答记录下来,并将举一反三的解题方法都记上,并归纳提醒。
    7、难题管理:要让孩子准备一个“难题管理本”将难题解答方法记录下来,以及举一反三的解题方法都记上,并归纳提醒。在解难题时要让孩子先做,在20多分钟都解不了的题,允许孩子可以问其他人,弄懂其解答原理。
    8、 考试管理:除学校考试外,并在20天左右再让孩子做一次其考试题。