複数の条件が必要な場合は、次のように区切りますAND
。
... WHERE table1.age <= ? AND table1.region = ?
再度使用する必要はありませんWHERE
。if()
PHP で複雑な条件を記述している場合に、複数回使用する必要がないのと同じように。
PS: これはあなたの質問とは直接関係ありませんが、$_POST または $_GET 変数を SQL クエリに直接入れないことを習慣にする必要があります。これはハッキングの良い方法です。「SQL インジェクション」について家庭教師に尋ねるか、私のプレゼンテーションSQL Injection Myths and Fallacies を読んでください。
始めたばかりだとは思いますが、電気技師になるための訓練を受けているのであれば、感電や火災を避ける方法を学ぶことを最優先するでしょう。
mysqli を使用してクエリを作成する方法を次に示します。クエリ パラメーターを使用する利点の 1 つは、引用符の開始位置と終了位置を気にする必要がないことです。
$query = "SELECT * from table1 where table1.age <= ? AND table1.region = ?";
$stmt = $mysqli->prepare($query) or trigger_error($mysqli->error, E_USER_ERROR);
$stmt->bind_param("is", $_POST["min_age"], $_POST["region"]);
$stmt->execute() or trigger_error($stmt->error, E_USER_ERROR);
ここで示しているもう 1 つの良い習慣は、prepare() または execute() がエラーを返す場合は常に報告することです。
変数を SQL に補間する必要がある場合は、まず、値を整数に変換するか、mysqli_real_escape_string() などの適切なエスケープ関数を使用して変数を保護してください。 $_POST 変数を文字列に直接入れないでください。また、二重引用符で囲まれた文字列に変数を直接埋め込むために PHP の構文を使用する場合は、引用符を停止して再開する必要はありません。
$age = (int) $_POST["min_age"];
$region = $mysqli->real_escape_string($_POST["region"]);
$query = "SELECT * from table1 where table1.age <= {$age}
AND table1.region = '{$region}'";