2016-07-04 1 views
0

모두들, 나는 다음과 같이 조금 붙어 있습니다.MySQL HTML 폼으로 레코드를 가져 오기위한 쿼리 체크 박스

확인란이있는 HTML 양식이 있습니다.

|id|colorids| 
+--+--------+ 
|1 |4  | 
|2 |2  | 
|3 |3,1  | 
|4 |1  | 
|5 |2,3  | 
|6 |5  | 

colorids TYPE VARCHAR 

나는 상자를 선택 '1 브라운'나는 결과 아이디 (4)를 얻어야한다,이 문제가되지 않습니다 :

<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의 테이블이 있습니다. 또는 상자 '1 갈색'과 '5 황색', 나는 이드 4와 이드 6, 아무런 문제가 없습니다.

하지만 난 상자 '2 블루'와 '3 녹색'를 선택한 경우 '5 노란색'내가 원하는 결과를 얻을 : 이제 ID 2, ID 3, ID 5, ID 6

이 내가 돈을 어떻게하는지 알지 못한다.

colorids에 값이 하나만 있으면이 쿼리가 올바르게 작동합니다.

<cfquery name="qGetColors" datasource="#application.dsn#"> 
      SELECT * 
      FROM 
        colors 
      WHERE   
        colorids IN (#form.colors#); 
    </cfquery> 

색 상자 열에 여러 개의 상자가 선택되어 있고 여러 개의 값이있을 때 원하는 결과를 얻으려면 어떤 쿼리를 사용해야합니까?

'find_in_set'과 함께 사용해야합니까? 그렇다면 쿼리는 '색상'양식 목록과 어떻게 일치합니까?

도움이나 안내를 보내 주셔서 감사합니다. Coldfusion을 사용하고 있지만 쿼리가 문제입니다.

+4

SQL 주입을 방지하는 데 도움이 원래의 테이블에 ID에 other_id 연결 할 수 있습니다. –

+1

데이터베이스가 "목록"으로 작동하도록 설계되지 않았기 때문에 쿼리를 알아 내는데 어려움이있는 이유가 있습니다. 이들은 세트 (또는 행) 데이터로 작업하도록 설계되었습니다. 기술적으로 [find_in_set'과 같은 해킹을 사용할 수 있지만 (http://stackoverflow.com/questions/25437697/sql-query-multiple-tables-with-multiple-joins-and-column-field-with-comma-seper)/25437961 # 25437961) -하지 않아야합니다. 그것들은 적절한 테이블 구조를 만들기위한 빈약 한 대체품 일뿐입니다. 대신 테이블을 정규화하면 이와 같은 쿼리가 간단 해집니다. – Leigh

+0

안녕하세요, 귀하의 제안에 감사드립니다! 정말 감사합니다. 나는 데이터베이스 지식이 그렇게 좋지 않다고 생각한다. 내가 원하는 것을 얻기 위해 데이터베이스를 어떻게 정상화해야하는지에 대한 제안? – MrSoolmaan

답변

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

CFQUERYPARAM 당신은 각 ID와 colorid있는 테이블을 가지고 데이터베이스를 정상화

관련 문제