ユーザーからのフィルター入力に基づいてデータベースを照会するphpスクリプトを作成しようとしています
だから本質的に私は欲しい
select * from table where parent_id = '$filter_value'
ただし、デフォルト値を$ filter_valueに適用したいのですが、これはユーザーがフィルターを指定しない場合に有効になり、考えられるすべての結果が表示されます。
*を使ってみましたが、うまくいきませんでした...
ふたつのやり方:
値をNULLと比較します
SELECT *
FROM table
WHERE ($filter_value IS NULL OR parent_id = '$filter_value')
$ filter_valueに値が含まれているかどうかに基づいて、SQLを動的に作成します。そうでない場合、クエリは次のようになります。
SELECT *
FROM table
フィルタ変数がnullかどうかを確認するか、クエリをifステートメントでラップします。
SELECT * FROM baz WHERE foo = :bar OR :bar IS NULL
それはあなたが尋ねたものとは正確には異なりますが、それは非常に近く、私はより良い方法だと思います。あなたはこのようなことをすることができます:
if ( empty( $filter_value ) === false ) {
select * from table where parent_id = '$filter_value'
} else {
select * from table
}
これは単なる例であり、適切なphp構文ではありません。
しかし、アイデアは、何かに応じて異なる動作をしたい場合は、そのようにプログラムする必要があるということです。たとえば、if、そのように、それぞれの場合に何が起こるかを知っており、状況に依存せずに状況を制御します。 mysqlは渡された空の値を処理します。
OK、デフォルトの変数値として空白を挿入してみました
$filter_value = ''
問題を解決しました:$