ホームページ > バックエンド開発 > PHPチュートリアル > mysql_unbuffered_query で発生した問題について質問する

mysql_unbuffered_query で発生した問題について質問する

WBOY
リリース: 2016-06-20 12:44:03
オリジナル
1039 人が閲覧しました

質問してください

$lh = mysql_connect('localhost', 'root', 'root');
$qry = "SELECT * FROM aaa LIMIT 10"; mysql_unbuffered_query($qry, $lh);
$thread = mysql_thread_id ( $lh );
while ( $res = mysql_fetch_row( $rh ) )
{
$sql = "INSERT INTO b bb ( Goods_id,user_id) value(1111,2222)";
mysql_query($sql);
//ループ内で他の SQL が実行されると while は終了します。どういう状況ですか?
}


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

耳を塞いでベルを盗む? ?エラー メッセージをマスクしました:

以前のバッファリングされていないクエリから最初にすべての行をフェッチせずに関数が呼び出されました
以前のバッファリングされていないクエリから最初にすべての行をフェッチせずに呼び出された関数

マニュアルに記載されているように、次のことができます。見て見ぬふりをするだけではないですよね?
新しい SQL クエリを MySQL に送信する前に、キャッシュされていない SQL クエリによって生成されたすべての結果行をフェッチする必要があります。

@xuzuning 対処方法を聞きたいのですが、キャッシュされていない SQL クエリによって生成されたすべての結果行を抽出する方法がよくわかりません。

たとえば、$qry = "SELECT * FROM aaa LIMIT 10";

つまり、$rh = mysql_unbuffered_query($qry, $lh); の場合、
は存在しません。多くのリソース $rh 行 10 の結果

他のデータベース操作を実行する前に、それらをすべて読み出す必要があります
率直に言うと、MySQL に結果をキャッシュさせないと、自分で結果をキャッシュする

@xuzuning 率直に言えば、結果が抽出されていないため、上記のコード内では新しい SQL を送信できません。

これで理解できましたか?

はい、以上です!

司会者の皆様、丁寧なご説明ありがとうございました。

/ループ内で他の SQL が実行された場合、while は終了します。どういう状況ですか?

( $res = mysql_fetch_row( $rh ) ) mysql_fetch_row($rh) が影響を受けるため

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート