【问题标题】:In Coldfusion how do insert multiple checkbox values with the same name into a database?在 Coldfusion 中,如何将多个具有相同名称的复选框值插入到数据库中?
【发布时间】:2019-10-03 02:40:20
【问题描述】:

所以我想这样做:

  • 启动循环以检查名为“标签”的表单中的每个复选框

  • 插入数据库

  • 结束循环

【问题讨论】:

  • 取决于它们应该如何存储在数据库中。
  • 一般来说,避免在循环中实际放置查询是个好主意。
  • 该表单将为您提供已选中复选框值的逗号分隔列表。因此 form.tags 的值将类似于“1,2,8,11”,您可以遍历该列表来做您喜欢的事情。
  • 您遇到困难的部分是什么?

标签: forms loops checkbox coldfusion


【解决方案1】:

在 CF 中默认可以以逗号分隔列表的形式访问多个具有相同名称的字段,例如复选框的情况。还有一种方法可以调整 CF 以将它们作为数组访问,这在值可能包含逗号的情况下很重要。

<!--- ensure any checkboxes were checked, otherwise field isn't passed --->
<cfif structKeyExists(form, "tags")>
    <cfloop list="#form.tags#" index="tag">
        <cfquery datasource="yourdsn">
            INSERT INTO TableName (
                ColumnName
            )
            VALUES (
                <cfqueryparam value="#tag#" />
            )
        </cfquery>
    </cfloop>
</cfif>

当然,以上取决于您的具体需求。

【讨论】:

  • @mathin2000 我不建议在 cfquery 周围循环。这将为您要插入的每条记录建立新的连接。循环这些值然后执行单个cfquery 来插入多个值会更有效。
  • @Shawn 连接默认在 CF 中维护,仅供参考
  • @DanRoberts 即使查询值发生变化?我去看看,这很可能是我忘记的。无论如何,如果您将其降低到 SQL 级别,它仍然会为每个 INSERT 创建一个新的数据库事务,这是您不想做的。带有批量值的单个 INSERT 会更简洁。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多