모두들, 나는 다음과 같이 조금 붙어 있습니다.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을 사용하고 있지만 쿼리가 문제입니다.
SQL 주입을 방지하는 데 도움이 원래의 테이블에 ID에 other_id 연결 할 수 있습니다. –
데이터베이스가 "목록"으로 작동하도록 설계되지 않았기 때문에 쿼리를 알아 내는데 어려움이있는 이유가 있습니다. 이들은 세트 (또는 행) 데이터로 작업하도록 설계되었습니다. 기술적으로 [find_in_set'과 같은 해킹을 사용할 수 있지만 (http://stackoverflow.com/questions/25437697/sql-query-multiple-tables-with-multiple-joins-and-column-field-with-comma-seper)/25437961 # 25437961) -하지 않아야합니다. 그것들은 적절한 테이블 구조를 만들기위한 빈약 한 대체품 일뿐입니다. 대신 테이블을 정규화하면 이와 같은 쿼리가 간단 해집니다. – Leigh
안녕하세요, 귀하의 제안에 감사드립니다! 정말 감사합니다. 나는 데이터베이스 지식이 그렇게 좋지 않다고 생각한다. 내가 원하는 것을 얻기 위해 데이터베이스를 어떻게 정상화해야하는지에 대한 제안? – MrSoolmaan