Join ASP经典-如何加入字符串数组/加入/内爆不起作用

Join ASP经典-如何加入字符串数组/加入/内爆不起作用,join,asp-classic,request.form,Join,Asp Classic,Request.form,我得到这个错误: Microsoft VBScript编译错误“800a0401” 预期报表结束 /包括/Process.asp,第49行stringIdCollection=Join( 申请表格(“id”),“,”)) ------------------------------------------------------------------------^ 甚至可以在请求时使用Join.Form吗 我希望输出为: “其中id位于('122'、'344'、'599')” join函数需要

我得到这个错误:

Microsoft VBScript编译错误“800a0401”

预期报表结束

/包括/Process.asp,第49行stringIdCollection=Join( 申请表格(“id”),“,”)) ------------------------------------------------------------------------^

甚至可以在请求时使用Join.Form吗

我希望输出为:

“其中id位于('122'、'344'、'599')”


join
函数需要一个数组作为第一个参数。在经典ASP(VBScript)中,
Request.Form
中的数据始终是字符串,因此不可能在其中包含实际数组,您必须自己构建数组:

Dim stringIdCollection
    stringIdCollection = Join( Request.Form( "id" ), "', '" ) )    
Dim whereStatement
    whereStatement = "WHERE id IN ('" & stringIdCollection & "');"
另外请注意,在经典ASP中,如果您提交多个具有相同名称(即
id
)的表单字段,它们将进入已用逗号分隔的
Request.form


与PHP中可以做的相反,在结尾处添加方括号[]来命名多个表单字段,ASP不会将其转换为Request.form中的数组。

第二行中的括号应该删除:

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

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

编辑:的文档有点误导。
Request.Form(“item”)
返回的值实际上不是数组,而是类似数组的对象。您可以使用
Count
属性迭代这些值,并在迭代时生成字符串:

    stringIdCollection = Join( Request.Form( "id" ), "', '" )
Dim stringIdCollection,i
对于i=1请求.Form(“id”).Count
如果Len(stringIdCollection)为0,则
stringIdCollection=stringIdCollection&“
如果结束
stringIdCollection=stringIdCollection&“'”和Request.Form(“id”)(i)和“”
下一个

这当然是问题所在。。。唉,很明显MaxiWheat有一个点“类型不匹配:'Join'”@JamesT,请参见我的编辑。表单并不是真正返回数组或字符串,而是一个类似数组的对象。谢谢提供更多信息
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