2012-03-28 16 views
0

私たちは何をする必要があるのか​​説明することができますjava: while rs.next()php: while ($result = mysql_fetch_array)?プログラミング言語はどのようにしてデータベースからデータを検索しますか?何が起こるのですか ?なぜ全体の反応を信じていないのですか?データベースの結果を取得する

私は分かりませんが、私は本当にこのことを断言できません。厄介なことです。

私は「彼らが行うため、その」だけでなく、ドキュメントを必要とする

PS:

$result = mysql_query($query) $結果にクエリ結果を返していないのだろうか?次に:while ($row = mysql_fetch_array($result)) { do stuff } ??

ありがとうございました

+1

「なぜ全体の反応を喚起しないのですか? Eeeeeeeeek。パフォーマンスはおそらく? – PeeHaa

+0

しかし、それはどのようにそれを行うのですか?一度に1つの行を取得するようにデータベースに指示するphp/javaはどのようにしていますか? – pufos

+1

申し訳ありませんが誤解しました。私は方法の代わりに理由を見たと思った。とにかく:http://lxr.php.net/search?q=mysql_fetch_array&project=PHP_5_4&defs=&refs=&path=&hist= – PeeHaa

答えて

1

特定のアプローチではリーダーを使用しているようです。読者のアプローチは、ちょうど同じ時にメモリに全体の結果セットを持参の上にいくつかの利点があります。

  • クエリが
  • あなたは通常、結果セットのすべてを送信する前に処理を開始することができます完了する前に、あなたは時々処理を開始することができます。
  • 大きなデータセットを同時にメモリに保持する必要はありません(一度にすべてのデータを保持する必要がない場合は、パフォーマンス上の大きな問題になる可能性があります)。
  • これは、データベースからデータを取得するためのかなり標準的な、よく理解されているアプローチです。
1

彼らはそうするからです。
あなたが好きなら、それはどのように動作しますか?

私たちの生活の中では、時々、全体の反応を得ることができません。
井戸から樽を詰めたければ、にはがあります。他の方法はありません。 そして、ポンプはそれを大きく変えないでしょう - とにかく待たなければならない、あなたは一度に "全体の応答"を得ることができません。 ストリームソースの性質のため。

を偽装することは、内部で同じプロセスを実行するいくつかのより高いレベルの置換を伴うプロセス全体を偽装することです。あなたはあなたのためにそれを埋めるために気に人から一杯のバレルを購入することができます。

データベースは、テーブルから1つずつ行を読み取ります。あなたは "全体の応答"を得ることはできません。 しかし、関数を書く(または使用する)ことができます。関数は、内部のすべての処理を行い、必要な応答を与えます。

+0

しかし、$ result = mysql_query( $ query); $結果配列に返されたすべての行を埋めますか? – pufos

+0

あなたは関数を書くことができます。それはあなたのためにそれを行います。希望の結果をもたらす例については、http://stackoverflow.com/a/9888225/285587を参照してください。 –

+0

これは関数の記述ではなく、どのように動作するかについてです。$ result ?実際にmysql_queryが返すものは?] – pufos

0

ほとんどのデータベースでは、常に結果が行単位で返されます。これは、データを取得する自然な方法であり、すべてを一度にロードしないということは、過度のメモリを使用することなく、一度に1行ずつ百万行の結果を処理できることを意味します(一度に1行で処理できるということを前提とします)。必要に応じて、データベースラッパーライブラリが豊富にあります。このライブラリには、すでに変数内にすべてのものが含まれているクエリのリターンのバリエーションがあります。または、ラッパー関数を自分で書くこともできますが、それはかなりシンプルです。過去には、多次元配列(オプションの配列インデックスを使用して)にすべてを入れるラッパー関数がありました。ただ1つの行を取得し、1つのフィールドを取得するだけです。

+0

man、私は理解していますが、 '$ result = mysql_query($ query)'はクエリ結果を$ resultに返さないでしょうか? while($ row = mysql_fetch_array($ result)){} ?? – pufos

関連する問題