MySQL Query用于检索带有HTML表单复选框的记录

时间:2016-07-04 14:23:50

标签: mysql sql coldfusion

我是大家,我对以下内容感到有些困惑。

我有一个带有复选框的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,但查询是个问题。

1 个答案:

答案 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注入