sql - 如何从 asp 中的“选择多个”框中更新 SQL 数据库中的多个值?
问题描述
我正在设置一个多选框以允许一次将多个值添加到数据库中,并使用以下代码:
<select name="add" style="width: 100%; height: 100px" multiple>
<%
do until rsCategory.bof or rsCategory.eof = true
%>
<option value="<%=rsCategory("catID")%>"><%=rsCategory("Cat")%></option>
<%
rsCategory.movenext
loop %>
</select>
此代码可以很好地显示多项选择,并且是对我拥有的单个选择的现有下拉框的扭曲。我遇到的麻烦是将以下代码转换为将多个值输入到 SQL 数据库中,而不仅仅是一个值:
<!-- #include virtual = "includes/coredataconn.asp " -->
<!-- #include virtual = "includes/cleansql.asp" -->
<%
if session("customername") <> "admin" then response.redirect "logout.asp"
accID = cleansql(request.form("accountID"))
catId = cleansql(request.form("add"))
set rsNU = server.createobject("adodb.recordset")
sqNU = "SELECT * FROM categoriestable WHERE ((([AccountNo])='" & accID & "') OR accountID='" & accID & "');"
rsNU.open sqNU, cnnCore, 3, 3
rsNU(catId) = "Y"
rsNU.update
response.Redirect "../admin_categories.asp?account=" & accID
%>
我会想象某种 for 循环会起作用,但我正在努力让它正确。有没有人有任何想法?
先感谢您。
解决方案
我不知道你的 cleansql 函数做了什么,但至少它表明你知道 SQL 注入风险,所以我会跳过那部分......
例如,“多个”选择以“15,23,45,28”格式返回其值。
因此,您可以使用以下内容:
accID = cleansql(request.form("accountID"))
catId = cleansql(request.form("add"))
sqNU = "UPDATE categoriestable SET whatever_field = 'Y' WHERE (AccountNo='" & accID & "' OR accountID='" & accID & "') AND catID IN (" & catId & ")"
cnnCore.Execute sqNU
如果您的 catID 字段是数字,这应该按原样工作,否则您必须添加将 catId 内容格式化为“'15','23','45','28'”的代码
推荐阅读
- java - 电话响铃时弹出显示
- android - 如何动态更改bottomNavigationView中的文本内容
- java - 在禁用访问外部 DTD 的情况下,使用 TransformerFactory 将 XML 转换为字符串时出现问题
- api - API Gateway API 的基于 AWS Cognito 的身份验证
- javascript - Vuejs如何从url或router-link输入时阻止路由参数类型改变
- pdf - 无需 Javascript 即可为 Apple 设备一键复制页面
- bash - Bash:读取输入可用(是否有任何按键?)
- python - 如何使用日期时间和数字条目在此熊猫数据框中创建唯一 ID?
- pandas - 如果此列中的所有值都是特定值,则从数据框中删除列
- .net - WF4 WorkflowApplication - 自定义 SynchronizationContext 以模拟用户 (Thread.CurrentPrincipal)