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吗?
我希望输出为:
“WHERE id IN('122','344','599')”
答案 0 :(得分:4)
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中的数组。
答案 1 :(得分: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