mysql查询的1个存储过程,显示2个查询结果,怎么在PHP里把2个结果显示出来
------------------------------
mysql存储过程:
-------------------------------
begin
     declare strSQL varchar(3000);
     declare beginnum int;
     declare strCount_s varchar(2000);     
     /*判断页数,如果是空或者0或者null默认第一页*/
     if(PageIndex is null or PageIndex = '' or PageIndex = 0)
     then
 set PageIndex = 1;
     end if;
   /*判断每页显示数,如果是空或者0或者null默认第一条*/
     if (SplitCount=0 or SplitCount='' or SplitCount is null)
   then
     set SplitCount = 1;
   end if; 
     /*根据条件,查询所有数据集*/
     set @beginnum = (PageIndex -1) * SplitCount; 
     set @strSQL = concat('select ', numtype, ' from  ', tablename, ' where ', wheretype,' ' , OrderBy, ' limit ',@beginnum, ',', SplitCount);        
   
     PREPARE stmt from @strSQL;
     execute stmt;    
     DEALLOCATE PREPARE stmt;
     /*根据条件,查询总数据数量*/
     set @strCount_s=concat('select count(1) as countnum    from ', tablename,' where ', wheretype);
     prepare select_rowscount from @strCount_s;
     execute select_rowscount;
     DEALLOCATE PREPARE select_rowscount;endMYSQL结果1: DEALLOCATE PREPARE stmt; 输出的所有查询数据
MYSQL结果2: DEALLOCATE PREPARE select_rowscount; 输出查询总数量
----------------------------------------PHP存储过程类----------------------------------------
/**
 * 存储过程操作
 *
 * @param $produceAndParams 存储过程名称及参数
 *  格式为ProduceName(para1, para2.....),
 *  如果参数是字符请加单引号
 * @return $resultnum 返回操作成功影响的行数
 * @throws Exception 存储过程异常
 */
public static function RunProduce($produceAndParams)
{
global $_config;
if (!mysql_query("SET NAMES ".$_config['coding'], self::$_wdbConn)) {
     throw new Exception("设置字符集".$_config['coding']."失败:".mysql_error());
    }
if(!mysql_query('call '.$produceAndParams.';', self::$_wdbConn)) {
throw new Exception("调用存储过程失败:".mysql_error());
}
$resultNum = mysql_affected_rows(self::$_wdbConn);
return $resultNum;
}----------------------------------怎么在PHP里写,能把存储过程查询的2个结果显示出来

解决方案 »

  1.   

    我搜集的资料,你可以参考一下:
    php调用MySQL存储过程方法集合类型一:调用带输入、输出类型参数的方法
    view plainprint?
    $returnValue = '';  
    try {  
        mysql_query ( "set @Return" );  
        $spname = 'P__Test_GetInfo1';  
        mysql_query ( "call $spname(@Return, '{$userId}', '{$pwd}')" ) or die ( "[$spname]Query failed:" . mysql_error () );  
        $result_return = mysql_query ( "select @Return" );  
        $row_return = mysql_fetch_row ( $result_return );  
        $returnValue = $row_return [0];  
    } catch ( Exception $e ) {  
        echo $e;  
    }  
    echo $returnValue; //输出来自存储过程中输出的变量  类型二:调用带多个输出类型和多个输入类型参数的方法
    view plainprint?
    $userId = 0;  
    try{  
        mysql_query("set @Message");  
        mysql_query("set @Id");  
        mysql_query("call P__Test_Login(@Message, @Id, '{$userId}', '{$pwd}')", $conn) or die("Query failed:".mysql_error());  
        $result_mess = mysql_query("select @Message");  
        $result_uid = mysql_query("select @Id");  
        $row_mess = mysql_fetch_row($result_mess);  
        $row_uid = mysql_fetch_row($result_uid);  
        $Proc_Error = $row_mess[0];  
        $uId = $row_uid[0];  
    }  
    catch( Exception $e )  
    {  
       echo $e;  
    }  
    echo 'proc return message:'$Proc_Error.'<br/>'; //输出来自存储过程中输出的变量  
    echo 'User id:'.$uId; //获取用户id  类型三:调用带返回结果集的方法
    view plainprint?
    try {  
        $spname = 'P__Test_GetData';  
        $query = mysql_query ( "call $spname()", $conn ) or die ( "[$spname]Query failed:".mysql_error() );  
        while ( $row = mysql_fetch_array ( $query ) ) {  
            echo $row ['ProvinceID'].'::'.$row ['ProvinceName']; //输出数据集  
        }  
          
    } catch ( Exception $e ) {  
        echo $e;  
    }  类型四:调用带返回多个结果集的方法(目前只能通过mysqli来实现~~~~~)
    view plainprint?
    //PHP  
    $rows = array ();    
    $db = new mysqli($server,$user,$psd,$dbname);    
    if (mysqli_connect_errno()){    
        $this->message('Can not connect to MySQL server');    
    }    
    $db->query("SET NAMES UTF8");    
    $db->query("SET @Message");  
    if($db->real_query("call P__Test_GetData2(@Message)")){    
        do{    
            if($result = $db->store_result()){    
                while ($row = $result->fetch_assoc()){    
                    array_push($rows, $row);    
                }    
                $result->close();    
            }    
        }while($db->next_result());    
    }    
    $db->close();   
    print_r($rows);