我是大家,我对以下内容感到有些困惑。
我有一个带有复选框的HTML表单。
<input type="checkbox" name="colors" value="1"/>1 brown<br>
<input type="checkbox" name="colors" value="2"/>2 blue<br>
<input type="checkbox" name="colors" value="3"/>3 green<br>
<input type="checkbox" name="colors" value="4"/>4 red<br>
<input type="checkbox" name="colors" value="5"/>5 yellow<br>
我有一个MySQL表格如下:
|id|colorids|
+--+--------+
|1 |4 |
|2 |2 |
|3 |3,1 |
|4 |1 |
|5 |2,3 |
|6 |5 |
colorids TYPE VARCHAR
当我选择方框时,1棕色&#39;我应该得到结果id 4,这没问题。或盒子里的棕色&#39;和&#39; 5黄色&#39;,我得到id 4和id 6,也没问题。
但是当我选择方框时,蓝色&#39;和&#39; 3绿色&#39;和&#39; 5黄色&#39;我希望得到结果:id 2,id 3,id 5,id 6
现在我不知道该怎么做。
如果colorids中只有一个值,则此查询可以正常工作。
<cfquery name="qGetColors" datasource="#application.dsn#">
SELECT *
FROM
colors
WHERE
colorids IN (#form.colors#);
</cfquery>
当我选择了多个框并且在de colorids列中有多个值时,我应该使用什么查询来获得我想要的内容?
我是否需要使用“find_in_set&#39 ;?如果是这样,查询将如何使用表单列表&#39; colors&#39;?
非常感谢任何帮助或指示。我使用Coldfusion,但查询是个问题。
答案 0 :(得分:0)
正如@Matt Busche所说,你想要另一张桌子,就像这样;
|id|other_id|colorids|
+--+--------+--------+
|1 |1 |4
|2 |2 |2
|3 |3 |3
|4 |3 |1
|5 |4 |1
|6 |5 |2
|7 |5 |3
|8 |6 |5
然后您可以轻松select other_id where colourids IN (<CFQUERYPARAM VALUE="#form.colors#" CFSQLTYPE="CF_SQL_INTEGER" LIST="YES">)
将other_id与原始表格中的ID相关联
cfqueryparam有助于防止sql注入