-3

ユーザーが場所、都市、最小価格、最大価格などのさまざまな基準でデータベースを検索できるようにするフォームを作成しています。

「基本」選択ステートメントがあります: SELECT * FROM table.

検索フォームには、ユーザーが検索したい内容に応じて、値がある場合とない場合があるいくつかのテキスト ボックスとドロップダウンがあります。

(ユーザーの選択に基づいて) 特定のテーブル列に使用する値がある場合とない場合がある場合に、SQL ステートメントに WHERE 句を追加する方法を理解するのに苦労しています。

誰の助けにも感謝します!

4

2 に答える 2

3

SQL を生成するコードで、ユーザーが入力したフィールドを確認し、ユーザーからの入力が増えるにつれてクエリにチェックを追加します。PHP での簡単な例:

$sql = "SELECT * FROM table";
$where_checks = array();

if (isset($_POST['city']))
   $where_checks[] = "city = '{$_POST['city']}'";
if (isset($_POST['location']))
   $where_checks[] = "location = '{$_POST['location']}'";

// Add more stuff here

if (count($where_checks) > 0)
   $sql .= " WHERE " . implode('AND', $where_checks);

// run query

例を単純にするために、投稿入力のサニテーション/エスケープを意図的に省略しました。しかし、明らかに入力もサニタイズする必要があります

WHEREそうしないとクエリが壊れる前に、余分なスペースに注意してください。

于 2012-07-12T12:32:06.087 に答える
0

このアプローチを使用する

select 
    columns
from 
    table
where 
    (location=@location or @location is null) and
    (city=@city or @city is null) and
    .
    .
于 2012-07-12T12:35:45.027 に答える