1

データベースのテーブルを使用して html ページを作成しました。不要なデータを除外できるドロップダウン ボックスを上部に追加したいと考えています。この情報をデータベースに送信してクエリを作成し、複数の変数を含むデータを除外するにはどうすればよいでしょうか?

たとえば、A、B、C、D、および E の 5 つのカテゴリがあります。PHP コードを使用して、A、B、C、D、および E の可能な値/エントリをボックスに入力しました。ユーザーがこの列をフィルターの一部として含めたくない場合に備えて、「NULL エントリ」を追加しました。

したがって、現状では、それぞれの列について次のことができます。

Apple, always, as, amazing, as, almonds, NULL.
Belly, boosts, bad, NULL.
Candy, can, create, NULL.
Dandy, does, do, don't, NULL.
Elements, exist, NULL.

変数が不定の場合、データベースに情報を送信するにはどうすればよいですか? 設定されている場合と設定されていない場合があります。

最初に isset() を使用して変数が設定されているかどうかを確認することから始めようと考えましたが、そこからどのように進めればよいでしょうか。多くの「if」ステートメントのようです。ユーザーが入力した変数の値に基づいてクエリを変更するだけです。しかし、それを行う簡単な方法はわかりません。

「WHERE A = this AND B = that AND C = thisthat AND ..」をクエリの末尾に追加するだけですが、これらのエントリの 1 つ以上またはすべてが null の場合はどうなるでしょうか。

助けてくれてありがとう。

4

1 に答える 1

1

次のように WHERE クエリを簡単に作成できます。

$where = array();

if ($A != '')
{ 
    $where[] = 'A = "' . $A . '"';
}

if ($B != '')
{ 
    $where[] = 'B = "' . $B . '"';
}

if ($C != '')
{ 
    $where[] = 'C = "' . $C . '"';
}

if ($D != '')
{ 
    $where[] = 'D = "' . $D . '"';
}

if ($E != '')
{ 
    $where[] = 'E = "' . $E . '"';
}

// Now get the $where
$final_where = '';
if (count($where) > 0)
{
    $final_where = implode(' AND ', $where);
}

// $final_where will contain
// A = 'ab' AND B = 'cd' etc.

入力内容は必ずサニタイズしてください。たとえば、 $A に期待する値が含まれていることを確認するチェックを追加する必要があります。それ以外のものはすべて破棄する必要があります。in_arrayたとえば、次のように使用できます。

$a_array = array('first value', 'second value', 'third value');
if (in_array($A, $a_array))
{
    // Valid choice - we can use it
}
else 
{
    // Not valid set $A to null
    $A = '';
}
于 2012-10-12T15:11:39.763 に答える