찾다
백엔드 개발PHP 튜토리얼 mysql查询的1个存储过程,显示2个查询结果,如何在PHP里把2个结果显示出来

mysql查询的1个存储过程,显示2个查询结果,怎么在PHP里把2个结果显示出来
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;

end

MYSQL结果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个结果显示出来



------解决方案--------------------
我搜集的资料,你可以参考一下:


PHP code
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); <div class="clear">
                 
              
              
        
            </div>
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

mysql-connector是什么mysql-connector是什么May 12, 2022 pm 04:04 PM

“mysql-connector”是mysql官方提供的驱动器,可以用于连接使用mysql;可利用“pip install mysql-connector”命令进行安装,利用“import mysql.connector”测试是否安装成功。

mysql需要commit吗mysql需要commit吗Apr 27, 2022 pm 07:04 PM

在mysql中,是否需要commit取决于存储引擎:1、若是不支持事务的存储引擎,如myisam,则不需要使用commit;2、若是支持事务的存储引擎,如innodb,则需要知道事务是否自动提交,因此需要使用commit。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는