1

ユーザーが 5 つの異なる入力フィールドを使用して mysql データベースを検索できる Web ページがあり、各入力フィールドは mysql テーブルの列と一致します。今のところ、彼らはデータベースを検索できますが、結果を返すには、すべてのフィールドがテーブル内の内容と完全に一致している必要があります。私がやりたいことは、データベースが特定の情報を含むすべてのインスタンスを返すよりも最初の 2 つのフィールドしか知らない場合です。また、ユーザーが最初の 2 つのフィールドよりも多く入力した場合、クエリはそれを考慮して、指定されたすべての情報に一致するすべての結果を返します。加重検索を見て、必要なものに近づくと思いましたが、加重検索は常に結果を返し、より正確なものが一番上にあるように思えました。結果が見つからない場合、私がしていることについては、結果が返されるべきではありません。皆さんがこれをコーディングする方法で私を助けることができれば、私はそれを大いに感謝します.

4

2 に答える 2

0

PHPを使用して部分的にクエリを作成し、値が存在する場合は必要な部分を追加します。だからこのようなもの:

$sql = "SELECT * FROM table WHERE 1";
$sql = .= (if(isset($_POST['field1']) && $_POST['field1'])?' AND field1='{$_POST['field1']}':'';
//etc

明らかにこれは基本的な例であり、そのまま使用しないでください。クエリで使用する前に、ユーザーが入力した入力をサニタイズしていることを確認する必要があります。

于 2013-01-09T16:55:05.173 に答える
0

最初に空でないパラメータを見つける必要があります。

foreach $_POST as $param {
$params[] = $param;
}

次に、WHERE 属性の長い式を作成する必要があります。

$query = "";
foreach $params as $param_name=>$param {
$query .= " && ".$param_name."=".$param;
}
// output: " && age=15 && gender=female && eyes=brown"

最後に、先頭に「&&」を付けずに SELECT を作成します。

$query = "SELECT * FROM table WHERE".substr($query,3);
于 2013-01-09T17:17:26.180 に答える