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"/>),