関数に多数の値を渡し、SQL クエリを作成してデータベース内のこれらの値を検索したいと考えています。
これに対する入力はドロップダウン ボックスです。これは、ワイルドカードとして作成したい入力が ALL または * である可能性があることを意味します。
問題は、次のことができないことです。
$result = mysql_query("SELECT * FROM table WHERE something1='$something1' AND something2='*'") or die(mysql_error());
開始しましたが、それを機能させるための論理ループがわかりません。これは私がこれまでに持っているものです:
public function search($something1, $something2, $something3, $something4, $something5) {
//create query
$query = "SELECT * FROM users";
if ($something1== null and $something2== null and $something3== null and $something4== null and $something5== null) {
//search all users
break
} else {
//append where
$query = $query . " WHERE ";
if ($something1!= null) {
$query = $query . "something1='$something1'"
}
if ($something2!= null) {
$query = $query . "something2='$something2'"
}
if ($something3!= null) {
$query = $query . "something3='$something3'"
}
if ($something4!= null) {
$query = $query . "something4='$something4'"
}
if ($something5!= null) {
$query = $query . "something5='$something5'"
}
$uuid = uniqid('', true);
$result = mysql_query($query) or die(mysql_error());
}
これの問題は、順番にしか機能しないことです。たとえば、something3 を最初に入力すると、正しい場所に AND が追加されません。
どんな助けでも大歓迎です。