你改下sql不就好了么 取:11-20 select top 10 * from tablename where id not in (select top 10 id from tablename)
这个limit是mssql不支持的,如果是mssql ,怎么写这个sql语句??如果哪个大哥帮我把我的分页问题解决了,我...我....我.的80*2 都给他了------------------------------------- "select top 10 from table " in mssql is equal with "select * from table limit 0,10"in mysql
I know it's equal,but only ten can be returned
select top 10 * from tablename where id not in (select top 10 id from tablename) 是可以得到的。我看了一个国外的bbs代码,他对mssql用的分页办法是这个,不知道会不会占多很多内存$result = mssql_query("SELECT top 20 * from table", $db_connect_id); mssql_data_seek($result,10);
1.-------------------------------------------- $result = mssql_query("SELECT top ".($offset+$rows)." * from table", $db_connect_id); mssql_data_seek($result,$offset);这是自一个国外论坛代码里找出来的。讨论一下可行性。 2.-------------------------------------------- "select top $rows * from tablename where id not in (select top $offset id from tablename)"这一种方法限制了必须表里带有id这样的字段。假如表里没有唯一标识字段就不能用这种方法了。就不知道方法1的性能和2比相差多少?
register_globals = on或在程序开始处加入
extract($_GET);
extract($_POST);
1 用echo变量输出也是和我预想的一样
可就是结果不对
2 register_globals我设的是on ]
3 在程序开始处加
extract($_GET);
extract($_POST);不管用
***************************
我觉得是函数执行上的问题,好象一直执行着同样的命令
点"上一页"和"下一页"时候,是不是每次都是重新的执行查询啊?
然后每一页都是显示新的搜索结果所以每一页的内容都一样
怎么才能改正啊???$MySQL->Query($TableName,$Fields,$Condition,$Order,$Sequenc,$offset,$maxline);//执行查询
........
if ($MySQL->nRows > 0) {//如果在数据库中搜索到结果,$MySQL->nRows 为信息总条数
$rec_num_list = $offset;//每页显示信息条数
if (($MySQL->nRows - $offset) < $maxline)//总条数-偏移量<每页显示数
$end = $MySQL->nRows - $offset;
else
$end = $maxline;
for ($i = 0; $i < $end; $i++) {
$data = $MySQL->GetValue(-1,$i);//获得一条查询值
echo $rec_num_list++; // 结果序列值
echo "<pre>";
print_r($data);//输出
echo "</pre>";
} // 其它页面的链接
if (!empty($KeyWord) and ($MySQL->nRows > $maxline)) {
echo "<p style=line-height:150% align=center>";
MyPages($MySQL->nRows,$KeyWord,$offset,$maxline);
echo "<br><br></p>";
}.............
function mypage
**********
function MyPages($total, $keyword, $offset, $maxline,$maxpage = 5){
echo "更 多 内 容<br>";
$keyword_url = urlencode($keyword);
$pages=ceil($total / $maxline);
// 检查是否有上一页
if($offset >= $maxline){
$preoffset=$offset - $maxline;
echo "<a href=\"".$_SERVER['PHP_SELF']."?KeyWord=".$keyword_url."&offset=".$preoffset."\"><b>上一页</b></a> \n";
}
//感觉上面的就是关键所在,点"上一页"和"下一页"时候,是不是每次都是重新的执行查询啊?
然后每一页都是显示新的搜索结果所以每一页的内容都一样
怎么才能改正啊???
//*************
//检查是否有下一页
$nextoffset = $offset + $maxline;
if (ceil($nextoffset/$maxline) < $pages){
echo " <a href=\"".$_SERVER['PHP_SELF']."?KeyWord=".$keyword_url."&offset=".$nextoffset."\"><b>下一页</b></a>\n";
}
}
我调试成功了,可以分页
但是里面有行代码是 $paginate['query'] = $query.' limit '.$offset.','.$rows;
$offset为当前页的首记录偏移量
$rows为每页显示信息条数
这个limit是mssql不支持的,如果是mssql ,怎么写这个sql语句??如果哪个大哥帮我把我的分页问题解决了,我...我....我.的80*2 都给他了
取:11-20
select top 10 * from tablename where id not in (select top 10 id from tablename)
"select top 10 from table " in mssql is equal with "select * from table limit 0,10"in mysql
是可以得到的。我看了一个国外的bbs代码,他对mssql用的分页办法是这个,不知道会不会占多很多内存$result = mssql_query("SELECT top 20 * from table", $db_connect_id);
mssql_data_seek($result,10);
$result = mssql_query("SELECT top ".($offset+$rows)." * from table", $db_connect_id);
mssql_data_seek($result,$offset);这是自一个国外论坛代码里找出来的。讨论一下可行性。
2.--------------------------------------------
"select top $rows * from tablename where id not in (select top $offset id from tablename)"这一种方法限制了必须表里带有id这样的字段。假如表里没有唯一标识字段就不能用这种方法了。就不知道方法1的性能和2比相差多少?