私は皆、次のことに少しだけ気をつけています。MySQL HTML形式のレコードを取得するためのクエリ
私はチェックボックス付きの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ブラウン」を選択すると、私は結果ID 4を取得する必要があり、これは問題ありません。またはボックス '1ブラウン'と '5黄色'、私はID 4とID 6も、問題はありません。
しかし、ときに私はボックス '2ブルー' と '3緑' と '5黄色い' 私が望む取得結果を選択:ID 2、ID 3、ID 5、ID 6
今、このIドン方法は分かりません。
coloridsに1つの値がある場合、このクエリは正常に動作します。
<cfquery name="qGetColors" datasource="#application.dsn#">
SELECT *
FROM
colors
WHERE
colorids IN (#form.colors#);
</cfquery>
何クエリ私は、複数の選択ボックスやデcoloridsの列に複数の値があるときに、私が欲しいものを得るために使うべきでしょうか?
「find_in_set」で何かを使用する必要がありますか?もしそうなら、クエリはフォームリスト 'colors'とどのようになるでしょうか?
多くのご協力ありがとうございました。 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