- - PR -
配列の数値分、Do While not〜
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-01-29 15:09
よろしくお願い致します。
VbScriptで下記のコードを記述しました。 内容は配列の数値分、Do While not〜で情報を抜き出したいのです。 具体的には下記になります。 ---------------------- SQL="SELECT * FROM xzy WHERE((x.x='"& Request.QueryString("x) &"'))" set rs=db.Execute(SQL) SQL="SELECT * FROM abc WHERE((a.a='"& Request.QueryString("a") &"'))" set rs1=db.Execute(SQL) a = rs1("a") b = split(a,",") For i = 0 To Ubound(b) Do While not rs.EOF <%=rs("id")%> rs.MoveNext Loop Next ------------------------ Ubound(b)=2です。 rs("Id")=11,12です。 処理結果を 1112 1112 1112 としたいのですが 実際は 1112 となってしまいます。 この書き方は無効なのでしょうか?他に方法はありますでしょうか? | ||||
|
投稿日時: 2009-01-29 16:02
FORのループは0−2だけど
その中で利用しているrsは一回目のループで 既にEOFになっているため 二回目以降のループではDO WHILEは一度も行われません。 Recordsetの取り扱いと出力のループを別にするか MoveFirstなんかで戻るかしないといけません。 | ||||
|
投稿日時: 2009-01-29 16:14
> For i = 0 To Ubound(b)
で 3 回同じ処理が走りますが 2 回目と 3 回目は rs が EOF になっているから何も出ないんだと思います。 毎回 MoveFirst すればいいんじゃないでしょうか。 それにしても解読するのが大変です。 ---------------------------------------------------
rs は ADODB.Recordse オブジェクトで rs の全レコードの「id」列を 3 回出力させようとしていますが 1 回しか出力されません。 --------------------------------------------------- っていう感じに書いた方がわかり易いです。 For より上の事って質問にあまり関係ないですし。 | ||||
|
投稿日時: 2009-01-29 16:37
ありがとうございます。
助かりました! | ||||
|
投稿日時: 2009-01-29 19:28
質問事項には関係ないけど
SQL Injection や Script Injection の脆弱性があるんじゃない?放っておいていいのかな? | ||||
|
投稿日時: 2009-01-30 13:14
え!どういうことでしょう?
| ||||
|
投稿日時: 2009-01-30 13:27
((x.x='"& Request.QueryString("x) &"'))
と ((a.a='"& Request.QueryString("a") &"')) の部分の事では? |
1