thinkphp2.0读取MSSQL提示附近有语法错误的关键字

问题代码如下所示:


< PHP
类的indexAction延伸动作{
公共功能索引(){
*
新模型();
测试=美元美元模型->查询('select顶10 * f_city);
转储(测试);
* /
citymodel美元= m('城市');
citymodel美元->找到();
转储($ citymodel);
}
}
>




情况是,查询可以正确读取数据,而M方法不能读取数据。It will report Incorrect syntax near the keyword'AS'. 误差。

原因是由dbmssql.class.php驱动的查询语句有问题。

因为TP2.0 MSSQL数据库驱动SQL 2005是有效的,但它是2000版本无效。原因是,在2000版中没有row_number功能。2005有这个功能,这似乎为数据分页提供了方便和效率。

我希望给TP2.0 2000驱动,临时处理方法是目前用来修改thinkphp 自由 司机认为DB dbmssql.class.php,将25美元递给李四加保护 / /在前面

第三百二十六行


公共功能parselimit($极限){
如果(emptyempty($极限极限= 1美元));
限制=爆炸(,,$限制);
如果(计数(限制)> 1)
limitstr美元=(t1.row_number美元之间。极限{ 0 }。'+ 1'。$极限{ 0 }。' + '。$limit { 1 }'。);
其他的
limitstr美元=(t1.row_number之间1美元的限制{ 0 }。;
返回的limitstr;
}




改变:


公共功能parselimit($极限){
返回' ';
}




这一变化将基本满足一般的SQL的要求,但是你不能使用的限制,因为MSSQL 2000的极限方法是前N

这是实现的。

如果你有麻烦,然后结合ADODB类库,它是支持MSSQL更好。结合ADODB类库,我的方法如下:

先下载ADODB类库和解压缩到ThinkPHP供应商目录,并重命名为adodb.php adodb.inc.php

然后commonaction.class.php内容是项目库建立


< PHP
类commonaction延伸动作{
公共dbsql美元;
功能_initialize(){
供应商('adodb5 ADODB。);
美元adonewconnection ADODB =(C('db_type '));
$ ADODB ->连接(C('db_host)、C('db_user)、C('db_pwd)、C('db_name '));
$ ADODB -> setfetchmode(adodb_fetch_assoc);
美元-> dbsql = $ ADODB;
}
}
>




在该项目的其他文件,你应该把这个commonaction.class.php文本使用ADODB,例如:






< PHP
类的indexAction延伸commonaction {
公共功能索引(){
为查询=美元-> dbsql ->执行('select *从xxx);
而($行= $查询-> fetchrow()){
echo $行{ 'fields};
}
}
}
>



它可以用ThinkPHP模块进行简单的数据查询也可以使用数据页的数据查询,是没有办法中的办法,这是一个愚蠢的方式哦,还是希望ThinkPHP能完美的一个版本的MSSQL 2000可以用来驱动。