2

MySQL クエリを含む PHP に if ステートメントを組み込む方法がわかりません。これが私がこれまでに持っているものです(未完成です):

$industry = $_GET['industry'];
$location = $_GET['location'];
$position = $_GET['position'];
$region = $_GET['region'];

if($industry=="any"){

}

if($location=="any"){

}

if($position=="any"){

}

if($region=="any"){

}

$sql_cat = "
SELECT *
FROM jobs
WHERE industry_cat='$industry' && location_cat='$location' && position_cat='$position' && region_cat='$region'
ORDER BY id DESC
";
$result_cat = $mysqli->query($sql_cat);
$num_rows_cat = mysqli_num_rows($result_cat);

基本的に、私が言おうとしているのは、変数のいずれかが「any」に設定されている場合、それらの変数がすべての可能性を表すことです (各変数のフォームには 5 つの可能性があります)。where 句 (WHERE industry IN ($industry) など) で配列を使用すると考えましたが、実際に変数を選択した場合は機能しません。

私は少し軌道から外れているかもしれませんが、それを理解するのに苦労しています. どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

4

If I did not misunderstand your question, I would do this.

$sql = "SELECT * FROM jobs WHERE 1";
if($industry !== "any"){
    $sql .= " AND industry_cat = '$industry'"
}
if($location !== "any"){
    $sql .= " AND location_cat = '$location'"
}
if($position !== "any"){
    $sql .= " AND position_cat = '$position'"
}
if($region !== "any"){
    $sql .= " AND region_cat = '$region'"
}
$sql .= " ORDER BY id DESC"
$result = $mysqli->query($sql);

You can remove single quote around the variables in the query if you are sure they are integer.

于 2012-12-18T05:52:18.803 に答える
0

where句を徐々に構築する

$industry = $_GET['industry'];
$location = $_GET['location'];
$position = $_GET['position'];
$region = $_GET['region'];

if($industry!="any"){
    $where[] = 'industry_cat=?';
    $where_args[] = $industry;
}

if($location!="any"){
    $where[] = 'location_cat=?';
    $where_args[] = $location;
}

if($position!="any"){
    $where[] = 'position_cat=?';
    $where_args[] = $position;
}

if($region!="any"){
    $where[] = 'region_cat=?';
    $where_args[] = $region;
}

$where_clause = implode(' and ', $where);

$sql_cat = "
SELECT *
FROM jobs
where $whereclause
ORDER BY id DESC
";
$stmt = $mysqli->prepare($sql_cat);
于 2012-12-18T05:54:04.903 に答える