3
Dim stringIdCollection
    stringIdCollection = Join( Request.Form( "id" ), "', '" ) )    
Dim whereStatement
    whereStatement = "WHERE id IN ('" & stringIdCollection & "');"

このエラーが発生します:

MicrosoftVBScriptコンパイルエラー「800a0401」

予想されるステートメントの終わり

/includes/Process.asp、49行目stringIdCollection = Join(Request.Form( "id")、 "'、'"))--------------------- -------------------------------------------------- -^

Request.FormでJoinを使用することも可能ですか?

出力を次のようにしたいと思います。

"WHERE id IN( '122'、 '344'、 '599')"

4

2 に答える 2

6

このjoin関数は、最初のパラメーターとして配列を想定しています。クラシックASP(VBScript)では、データRequest.Formは常に文字列であるため、実際の配列を含めることは不可能です。配列を自分で作成する必要があります。

Dim myArray
myArray = Array(Request.Form("id"), Request.Form("id2"), Request.Form("id3"))

Dim stringIdCollection
stringIdCollection = Join( myArray , "', '" ) ) 

また、Classic ASPでは、同じ名前(つまりid)で複数のフォームフィールドを送信すると、それらはRequest.Formすでにコンマで区切られていることに注意してください。

PHPで実行できることとは異なり、最後に角かっこ[]が追加された複数のフォームフィールドに名前を付けると、ASPはそれをRequest.Formの配列として変換しません。

于 2013-02-27T15:15:45.853 に答える
1

これは、削除する必要がある 2 行目の余分な括弧のように見えます。

    stringIdCollection = Join( Request.Form( "id" ), "', '" )

編集: のドキュメントRequest.Formは少し誤解を招くものです。によって返される値はRequest.Form("item")実際には配列ではなく、配列のようなオブジェクトです。プロパティを使用してこれらの値を繰り返し処理し、繰り返しながらCount文字列を作成できます。

Dim stringIdCollection, i

For i = 1 To Request.Form("id").Count
    If Len(stringIdCollection) <> 0 Then
        stringIdCollection = stringIdCollection & ","
    End If
    stringIdCollection = stringIdCollection & "'" & Request.Form("id")(i) & "'"
Next
于 2013-02-28T07:31:06.503 に答える