ホームページ  >  記事  >  バックエンド開発  >  PHP がストアド プロシージャを呼び出して複数の結果セットを返すのに、常にもう 1 つの結果セットが存在するのはなぜですか?

PHP がストアド プロシージャを呼び出して複数の結果セットを返すのに、常にもう 1 つの結果セットが存在するのはなぜですか?

WBOY
WBOYオリジナル
2016-06-23 14:12:30832ブラウズ

たとえば、
$db->query("SET NAMES UTF8");
if($db->real_query("call sp_test()")){
echo 'bp'; result = $ db-> store_result()){
}} while($> next_result());結果セット、2 bp と 2 つの結果セットが出力されます 3 bp がエコーされますが、ストレージを書いてステートメントを直接書かないと正常になり、もう 1 つありません アドバイスをお願いします。 !


ディスカッションへの返信(解決策)

これって普通じゃないですか?そうでなければ、if($result = $db->store_result()){ は何をしているのでしょうか?

これって普通じゃないですか?そうでなければ、if($result = $db->store_result()){ は何をしているのでしょうか?

こんにちは、PHP で直接ステートメントを書くと、 select 1;select 2; のように 2 bp と入力されます。 なぜこれですか? 3 つの

php データベース関数は select 1;select 2; 形式のクエリをサポートしていないため、参照システムとして使用できません

を読み取るには
   do{           if($result = $db->store_result()){           }       }while($db->next_result());   
のようなコード構造が必要です。ストアド プロシージャの結果セットがバグであると思われる場合は、php バグ Web サイトにアクセスして苦情を申し立てることができます。
ただし、修正する前にこれを行う必要があります

php のデータベース関数は select 1;select 2; 形式のクエリをサポートしていないため、参照システムとして使用できません

   do{           if($result = $db->store_result()){           }       }while($db->next_result());   
のコード構造は次のようになりますストアド プロシージャの結果セットが必要です。バグだと思われる場合は、php バグ Web サイトにアクセスして苦情を申し立てることができます。

ただし、修正する前にこれを行う必要があります


ありがとうございました

なぜなら、エコーは if($result = $db->store_result()){ の前に書かれており、結果があるかどうかは依存します。 on if ($result = $db->store_result()){ の判定結果が分かっているので、結果が 2 つあるはずの場合、if を 3 回判定する必要があり、これは先ほどの 3 倍の bp です

事実、簡単に言えば、あなた 混乱しているのは、


$i = 1;$max = 2;while(true) {	echo "A"; // 这里肯定会输出3个A	if($i > $max) {	    break;	}	$i++;	}

php のデータベース関数は、select 1;select 2; 形式のクエリをサポートしていないため、参照システムとして使用することができません

   do{           if($result = $db->store_result()){           }       }while($db->next_result());   
のようなコード構造はストアド プロシージャの結果セットを読み取る必要があるため、バグだと思われる場合は、PHP バグ Web サイトにアクセスして苦情を申し立てることができます。
しかし、修正する前にこれを行う必要があります

ヒーロー、申し訳ありませんが、$result = $db->store_result() についてもお聞きしたいのですが、これは代入操作です。 bool 値を返すにはどうすればよいでしょうか?

$db->store_result() クエリ結果リソースを返す

それ以上ない場合、戻り値は空(null)

$db->store_result() クエリ結果リソースを返す
無い場合もっと見る 戻り値が空(null)の場合

$result = null の場合、これは false を返しますか?


それは本当に false です。PHP は false を返すことができます。

if で判断されるのは $result の値だけです。 !

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。