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

我收到此错误:

Microsoft VBScript 编译错误“800a0401”

预期的语句结束

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

甚至可以在 Request.Form 上使用 Join 吗?

我希望输出为:

“ID 在哪里('122'、'344'、'599')”

4

2 回答 2

6

join函数需要一个数组作为第一个参数。在 Classic 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

这看起来像是应该删除的第二行的额外括号:

    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 回答