调用存储过程主要使用call 语句,在PHP 中,还是通过mysql_query 来调用。怎样既能得到存储过程的返回参数,又能得到存储过程中执行的SQL 语句的结果集呢?下面进行详细的说明。使用MySQL 包    使用Mysql_connect 函数建立的链接,在默认情况下无法处理存储过程中查询返回的结果集; 要想处理, 必须设定client_flags 为CLIENT_MULTI_RESULTS 。常量CLIENT_MULTI_RESULTS 在PHP 中没有定义,在MySQL 的手册中可以找到它的解释:通知服务器,客户端能够处理来自多语句执行或存储程序的多个结果集。其值是0x20000 ,需要先定义出来。代码如下: 
注释:
(1)定义常量
(2)设置客户端标记,建立数据库链接
(3)设置连接字符集
(4)调用存储过程,第一个参数设定要显示第一页,第二个参数将把总页数存入当前会话
变量pages 中;该存储过程还返回指定记录的结果集
(5)遍历结果集
(6)查询得到总页数 使用mysqli 包
使用mysqli 包就没有那么麻烦了,默认链接就可以直接操作了。
面向过程式代码如下:     面向对象式代码如下: 功能一样,就不多做解释了。
使用PDO 包在使用PDO 进行数据库操作时,需要设MYSQL_ATTR_USE_BUFFERED_QUERY
属性,否则不能同时取到结果集和总页数。代码如下:    也可以在实例化出PDO 对象后,通过调用
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
实现同样的效果。  使用ZF 框架的DB 包      Zend Framework 的DB 包实际上使用的还是PDO 接口,所以最主要的还是设置上述属性。代码如下: