MySQL左联where多表条件

select * from _test a left join _test b on a.id=b.id where a.level='20' and a.month='04' and b.level='20' and b.month='03';
select a.*,b.* from (select * from _test where level='20' and month='04') as a left join (select * from _test where level='20' and month='03') as b on a.id=b.id;

这两条语句结果是不同的,应该是left join的时候如果条件是多个表mysql会自动转成内联导致,第二条语句才能达到正确的目的(为了找到相差的两条数据)。

继续阅读

编译安装PHP报错:ext/date/php_date.lo is not a valid libtool object

安装php-5.3.13时,make报错:
ext/date/php_date.lo is not a valid libtool object。
查看libtool(由ltmain.sh生成)该错误是由于:
if (${SED} -e ’2q’ $arg | grep “^# Generated by .*$PACKAGE”) >/dev/null 2>&1; then 语句不成立而后续引起的。
正确的lo文件应该如下:
# ext/date/php_date.lo – a libtool object file# Generated by ltmain.sh – GNU libtool 1.5.26 (1.1220.2.492 2008/01/30 06:40:56)## Please DO NOT delete this file!# It is necessary for linking the library.# Name of the PIC object.pic_object=none# Name of the non-PIC object.non_pic_object=’php_date.o’
初始的5行,是有libtool文件中compile时添加的。在用安装脚本运行configure和make时,经常发现未添加成功。这就导致了后面的错误。
而手工make clean后再 make,就没有问题了。

编译安装PDO

linux下的php扩展与windows下的扩展安装有些不同。下面就拿在linux下扩展php的pdo,pdo_mysql模块来说明一下
1.在php的原码安装包里,进入到etc/pdo_mysql里。假设你的php是安装在/usr/local/php里的。执行/usr/local/php/bin/phpize
2.进行编译。./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql (假设你的mysql是安装在/usr/local/mysql)
3.编译安装。make,make install。
4.到了第3步的时候。在/usr/local/php/lib/php/extensions里就会多了个no-debug-non-zts-20050922文件夹,它里面就生成了一个pdo_mysql.so。
5.修改php.ini,加入扩展。