search

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

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



问题描述:分页思路:先计算出查询条件的记录条数,然后根据页码和每页条数计算出分页数据(存在两次分页)。
第一次查询,是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);          mysql_free_result(result);    }while(!mysql_next_result(&conn)); // to solve the "2014:Commands out of sync; " problem    凡是在执行多查询时,每个查询后都需调用以上这段代码才行。

刚才说的不够准确,但意思是到了
应该是 mysql 扩展会自动选择非空结果集,但 mysql_free_result 函数只能清空第一个结果集。这样 call 的结果集得不到清空,所以出错了

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);          mysql_free_result(result);    }while(!mysql_next_result(&conn)); // to solve the "2014:Commands out of sync; " problem    凡是在执行多查询时,每个查询后都需调用以上这段代码才行。




网上也是这么说,但mysql 没有这个方法,应该是mysqli_store_result 吧

mysql_close() 一下就可以了

mysql_close() 一下就可以了


 在第一个查询后将数据?连接断掉?每次查询都创建一次连接?

对,在每次执行存储过程并读取数据之后
$adSearchRs = $config[DAOIMPL]->getADSearchInfo($search,$offset,$page);
$adSearchList = rs2Array($adSearchRs);
mysql_close();

所以你可能需要修改数据库类

不对,应该是
$adRs = $config[DAOIMPL]->adSearchCount($search);
//$adList = rs2Array($adRs);
$adList=mysql_fetch_array($adRs);
//mysql_free_result($adRs);
mysql_close();

不对,应该是
$adRs = $config[DAOIMPL]->adSearchCount($search);
//$adList = rs2Array($adRs);
$adList=mysql_fetch_array($adRs);
//mysql_free_result($adRs);
mysql_close();



关闭连接,重新连接数据?还是不能解决这个问题,最有没有办法就好将页面中两个存储过程中的一个改成sql,才间接解决这个问题。
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何在CakePHP中创建自定义分页?如何在CakePHP中创建自定义分页?Jun 04, 2023 am 08:32 AM

CakePHP是一个强大的PHP框架,为开发人员提供了很多有用的工具和功能。其中之一是分页,它可以帮助我们将大量数据分成几页,从而简化浏览和操作。默认情况下,CakePHP提供了一些基本的分页方法,但有时你可能需要创建一些自定义的分页方法。这篇文章将向您展示如何在CakePHP中创建自定义分页。步骤1:创建自定义分页类首先,我们需要创建一个自定义分页类。这个

PHP开发:如何实现表格数据排序和分页功能PHP开发:如何实现表格数据排序和分页功能Sep 20, 2023 am 11:28 AM

PHP开发:如何实现表格数据排序和分页功能在进行Web开发中,处理大量数据是一项常见的任务。对于需要展示大量数据的表格,通常需要实现数据排序和分页功能,以提供良好的用户体验和优化系统性能。本文将介绍如何使用PHP实现表格数据的排序和分页功能,并给出具体的代码示例。排序功能实现在表格中实现排序功能,可以让用户根据不同的字段进行升序或降序排序。以下是一个实现表格

如何使用 JavaScript 实现表格分页功能?如何使用 JavaScript 实现表格分页功能?Oct 20, 2023 pm 06:19 PM

如何使用JavaScript实现表格分页功能?随着互联网的发展,越来越多的网站都会使用表格来展示数据。在一些数据量较大的情况下,需要将数据进行分页展示,以提升用户体验。本文将介绍如何使用JavaScript实现表格分页功能,并提供具体的代码示例。一、HTML结构首先,我们需要准备一个HTML结构来承载表格和分页按钮。我们可以使用&lt;tab

使用JavaScript实现表格数据的分页显示使用JavaScript实现表格数据的分页显示Jun 16, 2023 am 10:00 AM

随着数据的不断增长,表格显示变得更加困难。大多数情况下,表格中的数据量过大,导致表格在加载时变得缓慢,而且用户需要不断地浏览页面才能找到自己想要的数据。本文将介绍如何使用JavaScript实现表格数据的分页显示,让用户更容易找到自己想要的数据。一、动态创建表格为了使分页功能更加可控,需要动态创建表格。在HTML页面中,添加一个类似于下面的table元素。

MyBatis分页插件原理详解MyBatis分页插件原理详解Feb 22, 2024 pm 03:42 PM

MyBatis是一个优秀的持久层框架,它支持基于XML和注解的方式操作数据库,简单易用,同时也提供了丰富的插件机制。其中,分页插件是使用频率较高的插件之一。本文将深入探讨MyBatis分页插件的原理,并结合具体的代码示例进行说明。一、分页插件原理MyBatis本身并不提供原生的分页功能,但可以借助插件来实现分页查询。分页插件的原理主要是通过拦截MyBatis

Vue组件实战:分页组件开发Vue组件实战:分页组件开发Nov 24, 2023 am 08:56 AM

Vue组件实战:分页组件开发介绍在Web应用程序中,分页功能是必不可少的一个组件。一个好的分页组件应该展示简洁明了,功能丰富,而且易于集成和使用。在本文中,我们将介绍如何使用Vue.js框架来开发一个高度可定制化的分页组件。我们将通过代码示例来详细说明如何使用Vue组件开发。技术栈Vue.js2.xJavaScript(ES6)HTML5和CSS3开发环

Vue技术开发中如何实现分页功能Vue技术开发中如何实现分页功能Oct 09, 2023 am 09:06 AM

Vue是一种流行的JavaScript框架,用于构建用户界面。在Vue技术开发中,实现分页功能是常见的需求。本文将介绍如何使用Vue来实现分页功能,并提供具体代码示例。在开始之前,我们需要提前准备一些基本知识。首先,我们需要了解Vue的基本概念和语法。其次,我们需要知道如何使用Vue组件来构建我们的应用程序。开始之前,我们需要在Vue项目中安装一个分页插件,

VUE3开发入门教程:使用组件实现分页VUE3开发入门教程:使用组件实现分页Jun 16, 2023 am 08:48 AM

VUE3开发入门教程:使用组件实现分页分页是一个常见的需求,因为在实际开发中,我们往往需要将大量的数据分成若干页以展示给用户。在VUE3开发中,可以通过使用组件实现分页功能,本文将介绍如何使用组件实现简单的分页功能。1.创建组件首先,我们需要创建一个分页组件,使用“vuecreate”命令创建VUE项目,并在src/components目录下创建Pagin

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!