Mysql 如何将数组中的数字与resultset进行比较?

Mysql 如何将数组中的数字与resultset进行比较?,mysql,asp-classic,Mysql,Asp Classic,下面的代码将用户以前从数据库中选择的项目与项目id进行比较,并“检查”已选择的项目。因此,我有一个所有项目的复选框列表,其中只有他们以前选择的项目是“选中的”。这是一个更新订单页面 Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open Application("strConn") strSQL = "SELECT * FROM Items" 'current items selected 'e.g. 31, 32, 33

下面的代码将用户以前从数据库中选择的项目与项目id进行比较,并“检查”已选择的项目。因此,我有一个所有项目的复选框列表,其中只有他们以前选择的项目是“选中的”。这是一个更新订单页面

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("strConn")

strSQL = "SELECT * FROM Items"

'current items selected 
'e.g. 31, 32, 33                    
strItemSelected = curr_Item_IDs & ","                                   

set rs = Conn.Execute(strSQL)

If Not rs.EOF Then

Do while not rs.EOF

response.write "<input type = 'checkbox' "

If InStr(strItemSelected, CStr(rs("ID")) & ",") > 0 Then

response.write("checked = 'checked' ")

END if                  

response.write(" name='item' value=""" & rs("ID") & """> " & 
rs("item_name") & vbcrlf)
response.write("/     ID: " & rs("ID") & "<br />")                                          

rs.movenext

Loop

end if

set rs=nothing
此代码所做的是在ID为31时,它选择“31”,但也选择“1”。我确实认为是仪器引起了问题,但不确定如何纠正问题


任何帮助都将不胜感激

一种方法是调整查询以包含计算列:

'change your query... '
strSQL = "SELECT I.*, case when I.ID in (" & strItemSelected & ") then 'Y' else 'N' end as selected FROM Items I"
然后在循环中,用以下内容替换IF:

If rs("selected") = "Y" Then
    response.write("checked = 'checked' ")
END if  
如果您必须使用代码中的逻辑执行此操作,并且无法更改查询,则可以使用数组,而不是尝试使INSTR工作

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("strConn")    
strSQL = "SELECT * FROM Items"

'current items selected 
'e.g. 31, 32, 33                    
'-----Create an array here instead of a string------
arrItemSelected = SPLIT(curr_Item_IDs,",")

set rs = Conn.Execute(strSQL)

If Not rs.EOF Then        
    Do while not rs.EOF        
        response.write "<input type = 'checkbox' "
        '----Loop through the array-----
        For i=0 To UBound(arrItemSelected) Step 1
            If arrItemSelected(i) = CStr(rs("ID")) Then
               response.write("checked = 'checked' ")
            END if  
        Next

        response.write(" name='item' value=""" & rs("ID") & """> " & 
        rs("item_name") & vbcrlf)
        response.write("/     ID: " & rs("ID") & "<br />")                                          

        rs.movenext

    Loop
End If

@e4c5没有帮助,如果这是一个新的项目,我可能会同意你。然而,这很可能是一个现有的系统项目,该系统已经建立,公司不想重新开发。我之所以这么说,是因为我一直在看它,而且我个人必须维护大型经典ASP内部web应用程序。是的,经典ASP在这个时代非常活跃。你能不能不使用一个计算列,根据对所选项目的连接,使用二进制是、否或数字状态等来实现这一点?这将是我个人采用的方法,而不是在代码中执行逻辑,但RDM会完成这项工作。完全取决于您的数据库结构,这是否可行。