ホームページ >バックエンド開発 >PHPチュートリアル >mysqlクエリのストアドプロシージャで2つのクエリ結果が表示される PHPで2つの結果を表示する方法。

mysqlクエリのストアドプロシージャで2つのクエリ結果が表示される PHPで2つの結果を表示する方法。

WBOY
WBOYオリジナル
2016-06-13 13:29:411081ブラウズ

mysql クエリのストアド プロシージャで 2 つのクエリ結果が表示される PHP で 2 つの結果が表示される
mysql クエリのストアド プロシージャで 2 つのクエリ結果が表示される PHP で表示される方法
---- ------------------------
mysql ストアド プロシージャ:
------ ----- ----------
begin
strSQL varchar(3000) を宣言;
beginnum int を宣言;
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 または SplitCount=' ' または SplitCount が 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;
run stmt;
DEALLOCATE PREPARE stmt;
/*条件に基づいてデータの総数をクエリします*/
set @strCount_s=concat('select count (1) as countnum from ', tablename,' where ', wheretype);
prepare select_rowscount from @strCount_s;
use 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 例外ストアド プロシージャ例外
*/
パブリック静的関数 RunProduce($ProduceAndParams )
{
global $_config;
if (!mysql_query("SET NAMES ".$_config['coding'], self::$_wdbConn)) {
throw new Exception("SET 文字セット ".$_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 コード
PHP は MySQL ストアド プロシージャ メソッド コレクションを呼び出します

タイプ 1: 入力および出力型パラメーターを使用してメソッドを呼び出す
プレーンプリントを表示しますか?
$returnValue = '';
試す {
    mysql_query ( "set @Return" );
    $spname = 'P__Test_GetInfo1';
    mysql_query ( "call $spname(@Return, '{$userId}', '{$pwd}')" ) または die ( "[$spname]Query failed:" . mysql_error () );
    $result_return = mysql_query ( "select @Return" );
    $row_return = mysql_fetch_row ( $result_return );
    $returnValue = $row_return [0];
} catch (例外 $e) {
    $e をエコーし​​ます。
}
echo $returnValue; // ストアド プロシージャから出力される出力変数

タイプ 2: 複数の出力型と複数の入力型パラメーターを使用してメソッドを呼び出す
プレーンプリントを表示しますか?
$userId = 0;
試す{
    mysql_query("set @Message");
    mysql_query("@Id を設定");
    mysql_query("call P__Test_Login(@Message, @Id, '{$userId}', '{$pwd}')", $conn) または 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(例外 $e)
{
   $e をエコーし​​ます。
}
echo 'proc return message:'$Proc_Error.'<br/>' //ストアドプロシージャから出力された変数を出力します。
echo 'ユーザー ID:'.$uId; // ユーザー ID を取得します。

タイプ 3: 結果セットを返すメソッドの呼び出し
プレーンプリントを表示しますか?
試す {
    $spname = 'P__Test_GetData';
    $query = mysql_query ( "call $spname()", $conn ) または die ( "[$spname]Query failed:".mysql_error() );
    while ( $row = mysql_fetch_array ( $query ) ) {
        echo $row ['ProvinceID'].'::'.$row ['ProvinceName'] // 出力データセット
    }
      
} catch (例外 $e) {
    $e をエコーし​​ます。
}

タイプ 4: 複数の結果セットを返すメソッドの呼び出し (現在、これは mysqli~~~~~ を通じてのみ実現できます)
プレーンプリントを表示しますか?
//PHP
$rows = 配列();
$db = 新しい mysqli($server,$user,$psd,$dbname);
if (mysqli_connect_errno()){
    $this->message('MySQL サーバーに接続できません');
}
$db->query("SET NAMES UTF8");
$db->query("SET @Message");
if($db->real_query("call P__Test_GetData2(@Message)")){
    する{
        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 までご連絡ください。