dポイントプレゼントキャンペーン実施中!

phpとpsqlを使っています。
配列で受け渡されたチェックボックスで複数選択された値$param[]を、別テーブル(t_sample)のフィールド(data)で保存されているカンマ区切りのデータと参照して$paramのデータが1つでもあれば、そのテーブルの行を抽出したいのですが…。
$param[]の数によって、SQL文が変わるので、悩んでいます。
どなたか解決の糸口をご指南ください。

A 回答 (2件)

こんにちは。



概ね下の方の方法でいいとは思いますが、質問文の中の

>フィールド(data)で保存されているカンマ区切りのデータ

というのが気になります。^^;
dataフィールドに、「param1,param2,param3,・・・」な感じでデータが入ってるのかな?
だとすると、検索にはイコールではなくてlikeを使った方がいいかも。

$sql = "select * from t_sample where ";

for ($i = 0; $i < count($param) ; $i++){
$sql .= "data like '%" . $param[$i] . "%'";
if ($i != count($param)){
$sql .= " or ";
}
}

おもいっきり下の方のソース流用ですみません^^;
あ、ちなみに、他にwhere句に指定する条件がもしあるなら、上記のlike文はカッコで囲うように変更してくださいね。^^
(or条件が他と交じってしまいますから、、、)
    • good
    • 0

普段mySQLを使っていて、psqlは全くわからないのですが、


SQL文は一緒だと思うので、参考までに。

$sql = "select * from t_sample where ";

For ($i = 0; $i < count($param) ; $i++){
$sql .= "data = '" . $param[$i] . "'";
If ($i != count($param)){
$sql .= " Or ";
}
}

というのはどうでしょうか?
的外れでしたらすいません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!