cfqueryparam 从输入复选框传入列表

问题描述

我有一个输入复选框字段,用户可以在其中选择表单中的多个复选框,根据他们选择的内容,它会创建一个 id 字符串,例如 10、14、35、47,然后将其提交到数据库.如果我像下面这样直接提交,我可以提交这个:

user_job_type_id="#form.user_job_type_id#",

但是,如果我尝试将其包装在 cfqueryparam 中(我宁愿这样做以使其更安全),无论我做什么,我都会收到错误消息。无论我将其设置为列表 true 或 false、varchar、integer,一切都会引发错误,例如 cfqueryparam 不接受列表。

例如,下面将不起作用

user_job_type_id=<cfqueryparam cfsqltype="CF_sql_VARCHAR" value="#form.user_job_type_id#" list="Yes"/>,

在这里遗漏了什么?

解决方法

正如@SOS 提到的,在检查括号中的值列表时,您需要使用 IN 语句。此外,由于值都是整数,请确保指定正确的 cfsqltype。这可确保对列表中的每个元素进行正确的日期类型检查。

错误:

user_job_type_id = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#form.user_job_type_id#" list="Yes"/>,

更好:

user_job_type_id IN (<cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#form.user_job_type_id#" list="Yes"/>),

最佳:

user_job_type_id IN (<cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#form.user_job_type_id#" list="Yes"/>),