• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php+mysql 分页有关问题

php 搞代码 3年前 (2022-01-24) 28次浏览 已收录 0个评论

php+mysql 分页问题
求教:php+mysql分页 ,先贴代码,再描述问题
代码:

<br /><br /><br />$page=isset($_GET['page'])?intval($_GET['page']):1;        //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。<br />$searchinfo=isset($_GET['search'])?($_GET['search']):"-1"; <br />$search=($searchinfo=='请输入关键字')?-1:$searchinfo;<br /><br />$num=1;                                      //每页显示3条数据<br /><br />/*<br />首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是<br />总数据库除以每页显示的条数,有余进一。<br />也就是说10/3=3.3333=4 有余数就要进一。<br />*/<br /> if ($config[NEEDDB]) {<a style="color:transparent">来@源gao*daima.com搞@代#码网</a><strong>搞gaodaima代码</strong>  //if need db<br />	$dbLink = DBPool::getLink($config[DBDRIVER]);<br />	$daoImpl = DAOImpl::getImpl($dbLink, $config[TABLEPRE][BACKEND]);	<br />	$config[DBLINK] = $dbLink;<br />	$config[DAOIMPL] = $daoImpl;<br />}<br />$adRs = $config[DAOIMPL]->adSearchCount($search);<br />//$adList = rs2Array($adRs);<br />$adList=mysql_fetch_array($adRs);<br />mysql_free_result($adRs);<br />//DBPool::closeLink($config[DBLINK]);<br />if(count($adList)>0){<br />$total=$adList[0]['cn']; //查询所有的数据<br />}<br />else{<br />	$total=0;<br />}<br /><br />$url='views/adSearchResult.php';//获取本页URL<br />//页码计算<br />$pagenum=ceil($total/$num);                                    //获得总页数,也是最后一页<br />$page=min($pagenum,$page);//获得首页<br />$prepg=$page-1;//上一页<br />$nextpg=($page==$pagenum ? 0 : $page+1);//下一页<br />$offset=($page-1)*$num;                                        //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。<br />//开始分页导航条代码:<br />$pagenav="显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录,共 $total 条记录 ";<br />//如果只有一页则跳出函数:<br />//if($pagenum<=1) return false;<br />$pagenav.=" 首页 ";<br />if($prepg) $pagenav.=" 前页 "; else $pagenav.=" 前页 ";<br />if($nextpg) $pagenav.=" 后页 "; else $pagenav.=" 后页 ";<br />$pagenav.=" 尾页 ";<br />$pagenav.=" 页,共 $pagenum 页";<br />//假如传入的页数参数大于总页数,则显示错误信息<br />If($page>$pagenum){<br />       Echo "Error : Can Not Found The page ".$page;<br />       Exit;<br />}<br />$adSearchRs = $config[DAOIMPL]->getADSearchInfo($search,$offset,$page);<br />$adSearchList = rs2Array($adSearchRs);<br />//mysql_free_result($adSearchRs);<br />foreach ( $adSearchList as $it){<br />//While($it=mysql_fetch_array($adSearchRs)){<br />      Echo  '<div class="sylist1"><br />       <br />       </div><br />       <div class="sylist2">'.$it['title'].'</div><br />       <div class="sylist3">'.$it['subject'].'</div><br />       <div class="sylist4">'.$it['pic_url'].'</div><br />       <div class="sylist5">'.$it['advert_url'].'</div><br />       <div class="sylist6">'.$it['if_valid'].'</div><br />       </div>';<br />}//显示数据<br /><br />echo $pagenav;//输出分页导航<br /><br /><br />

问题描述:分页思路:先计算出查询条件的记录条数,然后根据页码和每页条数计算出分页数据(存在两次分页)。
第一次查询,是ok的,能够返回满足条件的数据条数,($adRs = $config[DAOIMPL]->adSearchCount($search););但是第二次查询执行后就报错了,报错信息是:
对应代码是While($it=mysql_fetch_array($adSearchRs)) 就是获取返回结果的时候。另外打印出的sql copy到数据库是有数据返回的
——解决方案——————–
那就是 $adSearchRs = $config[DAOIMPL]->getADSearchInfo($search,$offset,$page); 已经出错了!
你的 sql 指令是 call audioconver.p_advert_qry(‘-1’,0,1) 吗?
正确吗?结果返回给谁了?

——解决方案——————–
commands out sync: you can’t run this command new
这是“命令不同步”的原因,如果遇到该错误,说明正在以错误顺序调用客户端函数

你执行的是 call 命令,没有 select
所以会产生两个结果集
第一个是 select 的结果集,由于没有 select 命令,所以是无效的不能 php 处理成资源
第二个才是 call 的结果集

虽然 mysql 提供了 C 函数 mysql_next_result 用于移动结果集
但 php 的 mysql 扩展并没有提供该函数,所以可认为php 的 mysql 不能很好的支持存储过程(因为 mysql4 并不支持存储过程)
mysqli 扩展提供了 mysqli_next_result 函数,所以如果使用了存储过程,最好是用 mysqli 驱动

附上解决该问题的 C 代码

 do
{
result=mysql_store_result(&conn);


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php+mysql 分页有关问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址