下記のようなテーブルがある場合にSQL文を書くとき、
id | aaa | bbb | ccc
1 AAA BBB CCC
2 AAB BBB CCD
項目aaaとbbbを検索対象とした場合
Where aaa=AAA and bbb=BBB
となると思いますが、
この項目aaa,bbb,cccの中から、ユーザが入力した項目のみ検索対象としたい場合にどのように記述すればよいのでしょうか?
現状では、下記のようにphpでaaa,bbb,ccc項目のどこに条件が入力されているかで、ifで分けして複数のSQL文を書いていますが、どうにか1つのSQLでスマートにできませんか?
if aaa !="" and bbb = "" and ccc ="" then
select * from table where aaa = ***
elseif aaa !="" and bbb !="" and ccc="" then
select * from table where aaa = *** and bbb=***
end
No.1ベストアンサー
- 回答日時:
冗長なSQLを書くよりはデータ渡しの工夫はphp側ですべきです
たとえばこんなかんじ
<form>
aaa:<input type="text" name="aaa" value=""><br>
bbb:<input type="text" name="bbb" value=""><br>
ccc:<input type="text" name="ccc" value=""><br>
<input type="submit" value="search"><br>
</form>
<?PHP
$sql="select * from hogehoge where 1";
$aaa=(isset($_GET["aaa"])and $_GET["aaa"]!=="")?$_GET["aaa"]:null;
$bbb=(isset($_GET["bbb"])and $_GET["bbb"]!=="")?$_GET["bbb"]:null;
$ccc=(isset($_GET["ccc"])and $_GET["ccc"]!=="")?$_GET["ccc"]:null;
if(is_null($aaa) and is_null($bbb) and is_null($ccc)){
$sql.=" and 0";
}else{
if(!is_null($aaa)) $sql.=" and `aaa`='$aaa'";
if(!is_null($bbb)) $sql.=" and `bbb`='$bbb'";
if(!is_null($ccc)) $sql.=" and `ccc`='$ccc'";
}
print $sql;
?>
実際にはプレースホルダで処理する方が賢明。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- JavaScript JavaScript|特定URLだった時、特定の要素を変更するコードの書き方を教えてほしいです 2 2023/08/25 21:43
- JavaScript jsonテキストデータの並び替えができるサービスを教えてください 2 2022/08/05 20:16
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
下記の問合せを行うクエリを、P...
-
SQLです。こんな感じですか?あ...
-
書籍の内容はまともでしょうか?
-
うまくいきません教えてくださ...
-
東京23区を、皇居を中心とした...
-
mysqlがインストールされている...
-
下記の問合せを行うクエリを、P...
-
テーブル名が可変の場合のクエ...
-
本を見ながらPHPを勉強している...
-
次の時間帯の勝率の合計を求め...
-
あっってますか?うまくいきま...
-
[1000地域 × 10カテゴリー = 1...
-
下記の問合せを行うクエリを、P...
-
下記の問合せを行うクエリを、P...
-
下記の問合せを行うクエリを、P...
-
データベースの複製の仕方(mysql)
-
【初歩】ラジオボタンをつかっ...
-
MySQL NULLだけをカウントして...
-
SQL任意に並び替えをしたい
-
my_itemsテーブルのIDにAUTO_IN...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Null値が入れられない
-
NULLを含む列の足し算
-
SQLでLIMIT句を入れるとエラー...
-
MySQLの特定のカラムの内容を全...
-
nullと同じく空白をCountしない...
-
テーブル作成時に、「`id` int(...
-
SQL文を入力したらエラー
-
phpとSQLで複数条件で検索する...
-
MySQLで関連したデータを横に並...
-
VIEWに対してWHERE句をつける
-
空白文字を含む文字列データの検索
-
後でemailに追加でPRIMARY KEY...
-
sqlの中で、 例えば条件句で AN...
-
SQL任意に並び替えをしたい
-
コマンドプロンプト 実行結果...
-
count()の結果を別の計算で使う...
-
SELECT文の二段重ね
-
JOIN使ってないのに、JOIN操作...
-
コマンドプロンプト 複数の実...
-
SQLのエイリアス
おすすめ情報