再びMySQLです。たびたび申し訳ない…。

mysql_fetch_arrayなどで、読み込み終わったレコードセットを再利用すべく、
レコードの先頭に戻りたいのですが、そのような事はできますか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/04/13 16:24:14
  • 終了:--

回答(5件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982005/04/13 16:26:51

ポイント22pt

MoveFirst で いかがでしょうか?

id:nakeyouguisu

MoveFirstがつかえるのでしょうか??

2005/04/14 16:34:35
id:bmkage No.2

bmkage回答回数55ベストアンサー獲得回数02005/04/13 16:57:36

ポイント24pt

ただ先頭に戻りたいだけ。。。というのなら

再度Selectをかけてもう一度mysql_fetch_array()をやりなおせば

レコードの先頭に戻るといえば戻るのですが、

そうではなくて、好きなときに好きなレコードの値が取得したいのかな?と解釈しました。


何らかの関数で、結果セットのカーソル(?)を先頭にもどす、というのはすぐに思いつかないのですが

私の場合は、最初にSelectをかけた後、一度ループで全ての結果セットを配列に取るという方法をとっています。


$result = mysql_query(”select fld1, fld2 from table”);

while ($row = mysql_fetch_array($result)) {

# 一度配列としてとっておけばあとでいつでも参照できる

$FLD1[$i] = $row[”fld1”];

$FLD2[$i] = $row[”fld2”];

$i++;

}


上の例でいけば、$FLD1[0]に先頭のレコードのfld1の値が入っているカンジです。


的外れだったらすいません。

id:nakeyouguisu

同じようなSQLを発行する負荷が高いように感じたので、カーソルの位置を変更できるのであればしたいなと思った次第です。ODBC接続などを用いていればMovefirstすれば済む話なのですが、使えるのかな??

配列はさすがに負荷が・・・

2005/04/14 16:34:33
id:bmkage No.3

bmkage回答回数55ベストアンサー獲得回数02005/04/13 18:10:30

ポイント22pt

ODBC接続で、MySQLが使用できるか?ということですね?


結論から言えば、使用できます。


ただし、MySQL用のODBCドライバをインストールする必要があります。

今まで記述していたソースも、ODBC用に書き換える

必要も出てきますよね?


下記のサイトに、インストールから接続・設定の例や

AccessやExcelなどからの使用例(リンク)がありますのでご覧になってはどうでしょう?

id:nakeyouguisu

PHPにて用意されている標準関数にてサポートされているMovefirstはないですかね・・・?

2005/04/14 16:34:37
id:SOBA No.4

SOBA回答回数65ベストアンサー獲得回数62005/04/14 10:31:41

ポイント22pt

while($row = mysql_fetch_array($res)) {

 …

}


ではなく


for ($i = 0 ; $i < mysql_numrows($res) ; $i++) {

 $row = mysql_fetch_array($res,$i,MYSQL_ASSOC);

 …

}


などとすれば再度先頭から読み出せると思います。

id:nakeyouguisu

なるほど、mysql_numrowsで全行を取得して・・・

MYSQL_ASSOCをint [result_type]として設定すれば取得レコード番号を指定できるわけですか。

http://php.s3.to/man/function.mysql-fetch-array.html

と思ったら連想添字と数値添字だけのオプションでした…

こんな書きかたできるんですか?

2005/04/14 16:34:39
id:SOBA No.5

SOBA回答回数65ベストアンサー獲得回数62005/04/16 03:30:07

http://www.amazon.co.jp/exec/obidos/ASIN/4797321288/qid=11135886...

Amazon.co.jp: PHPによるWebアプリケーションスーパーサンプル: 本: 西沢 直木

以前購入した書籍(URL参照)に載っていて、whileよりも使いやすかったので

それ以降ずっとこの方法で利用していました。

レコード番号が指定出来るので結構便利だったのですが。


改めてマニュアル見てみたのですが…

どこにも載ってないですね…

id:nakeyouguisu

類似関数でしょうか…

なにかサイドパーティのものが用意されているのかもしれないですね。

2005/04/20 12:03:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません