0

SQL テーブルに列TitlePriceYearsOldあり、html ページの入力フォームを使用して一致する結果を検索したいとします。

ユーザーが希望する入力フォームを空白のままにしておくことができるようにしたいと考えています。したがって、すべてのフィールドを空白のままにすると、すべてのエントリが返されます。Title空白のままにして a を入力するとmaxPrice、タイトルに関係なく、maxAge価格と年齢がmaxPriceandより低いすべてのアイテムが表示されます。maxAge

if ステートメントを使用して、空白/非空白フィールド エントリのすべての組み合わせを考慮する必要がありますか? または、これを行うより良い方法はありますか?

たとえば、次のようなコードは避けたいと思います。

 if($_POST['titleSearch' == "") {
    if($_POST['maxAge'] == NULL) {
        if($_POST['maxPrice'] == NULL) {
            $query = $conn->prepare("SELECT * FROM table");
    }
    else if($_POST['maxAge'] != NULL) {
        if($_POST['maxPrice'] == NULL) {
            $query = $conn->prepare("SELECT * FROM table 
                WHERE age <  $_POST['maxAge'])";
        }

      # etc etc etc

    }
} 

どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

0

より効率的な方法は次のとおりです。

$tSet = strlen($_POST['titleSearch']);
$aSet = strlen($_POST['maxAge']);

if(!$tSet && !$aSet){
    $query = $conn->prepare("SELECT * FROM table");
} else if ($tSet && !$aSet){
    $query = $conn->prepare("SELECT * FROM table WHERE title=" . $_POST['titleSearch']);
}
于 2013-03-28T02:16:50.677 に答える