ホームページ >バックエンド開発 >PHPチュートリアル >php mysqlページング関連の問題

php mysqlページング関連の問題

WBOY
WBOYオリジナル
2016-06-13 11:59:46868ブラウズ

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]) {  //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.=" <a href=javascript:dopage('result','$url?page=1');>首页</a> ";<br />if($prepg) $pagenav.=" <a href=javascript:dopage('result','$url?page=$prepg');>前页</a> "; else $pagenav.=" 前页 ";<br />if($nextpg) $pagenav.=" <a href=javascript:dopage('result','$url?page=$nextpg');>后页</a> "; else $pagenav.=" 后页 ";<br />$pagenav.=" <a href=javascript:dopage('result','$url?page=$pagenum');>尾页</a> ";<br />$pagenav.="</select> 页,共 $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 />       <input type="checkbox" class="check" name="checkbox" id="checkbox'.$it['id'].'" value="'.$it['id'].'"/><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 />



問題の説明: ページネーションのアイデア: 最初にクエリ条件のレコード数を計算し、次にページ番号とページごとのレコード数に基づいてページング データを計算します (ページングは​​ 2 つあります)。
最初のクエリは問題なく、条件 ($adRs = $config[DAOIMPL]->adSearchCount($search);) を満たすデータ項目の数を返すことができますが、2 番目のクエリの後にエラーが報告されます。はい、エラー メッセージは次のとおりです:
対応するコードは While($it=mysql_fetch_array($adSearchRs)) で、返された結果を取得するときのものです。さらに、データベースに出力された SQL コピーはデータを返します
------解決策-----
つまり、$adSearchRs = $config[DAOIMPL]->getADSearchInfo($search,$offset,$page); が間違っています。
SQL コマンドは audioconver.p_advert_qry('-1',0,1) を呼び出していますか?
正しいですか?結果は誰に返されますか?

-----解決策---------
は同期を実行できません。 run this command new
これが「コマンドが同期していない」原因です。このエラーが発生した場合は、クライアント関数が間違った順序で呼び出されていることを意味します

call コマンドを実行しています。 select なし
したがって 2 つの結果セットが生成されます
1 つ目は select コマンドがないため無効であり、PHP によってリソースに処理できません
2 つ目は次のとおりです。 callの結果セット

mysqlには結果セット
を移動するためのC関数mysql_next_resultが用意されていますが、phpのmysql拡張機能にはこの関数が用意されていないため、phpのmysqlはストアドプロシージャをサポートできないと考えられます。 (mysql4 はストアド プロシージャをサポートしていないため)
mysqli 拡張機能は mysqli_next_result 関数を提供するため、ストアド プロシージャを使用する場合は、mysqli ドライバーを使用するのが最善です

問題を解決するには C コードをアタッチします問題

 実行<br> {<br> result= mysql_store_result(&conn);<div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。