php if/elseif not working at all


php if/elseif not working at all

调用该脚本的页面允许用户从1到5个字段中选择。其思想是将所选字段的数量相加并获取适当的结果。无论从表格中选择了多少字段,if/elseif语句都不起作用,我看不到问题。

$sql = "SELECT * FROM my_table";
$result = $conn->query($sql);
$fields_select = 0;
if($country_type != "") {
  $fields_select = $fields_select + 1;
  $winearr[] = "'$country_type";
  $winearr[] = "Country";
}
if($region_type != "") {
  $fields_select = $fields_select + 1;
  $winearr[] = "'$region_type";
  $winearr[] = "Region";
}
if($wine_type != "") {
  $fields_select = $fields_select + 1;
  $winearr[] = "'$wine_type";
  $winearr[] = "Type";
}
if($rating_type != "") {
  $fields_select = $fields_select + 1;
  $winearr[] = "'$rating_type";
  $winearr[] = "Rating";
}
if($vintage_type != "") {
  $fields_select = $fields_select + 1;
  $winearr[] = "'$vintage_type";
  $winearr[] = "Vintage";
}
if ($result->num_rows > 0) {
  if ($fields_select == 0) {
    echo "No Results Found In Search";
  } elseif ($fields_select == 1) {
    while($row = $result->fetch_assoc()) {
      if($winearr[0] == $row[$winearr[1]]) {
        makeListing($row); // call the function
      }
    }
  } elseif ($fields_select == 2) {
    while($row = $result->fetch_assoc()) {
      if($winearr[0] == $row[$winearr[1]] && $winearr[2] == $row[$winearr[3]]) {
        makeListing($row); // call the function
      }
    }
  } elseif ($fields_select == 3) {
    while($row = $result->fetch_assoc()) {
      if($winearr[0] == $row[$winearr[1]] && $winearr[2] == $row[$winearr[3]] && $winearr[4] == $row[$winearr[5]]) {
        makeListing($row); // call the function
      }
    }
  } elseif ($fields_select == 4) {
    while($row = $result->fetch_assoc()) {
      if($winearr[0] == $row[$winearr[1]] && $winearr[2] == $row[$winearr[3]] && $winearr[4] == $row[$winearr[5]] && $winearr[6] == $row[$winearr[7]]) {
        makeListing($row); // call the function
      }
    }
  } elseif ($fields_select == 5) {
    while($row = $result->fetch_assoc()) {
      if($winearr[0] == $row[$winearr[1]] && $winearr[2] == $row[$winearr[3]] && $winearr[4] == $row[$winearr[5]] && $winearr[6] == $row[$winearr[7]] && $winearr[8] == $row[$winearr[9]]) {
        makeListing($row); // call the function
      }
    }
  }
}
/* Debug */
echo $winearr[0]."-".$winearr[1]."-".$winearr[2]."-".$winearr[3]."-".$winearr[4]."-".$winearr[5]."-".$winearr[6]."-".$winearr[7]."-".$winearr[8]."-".$winearr[9];
echo "<br>'$fields_select=".$fields_select;

从你的代码I gusset你试图通过php搜索的东西是不正确的。试着根据你的查询进行搜索,并让你的数据库来处理搜索。

$sql = "SELECT * FROM my_table WHERE ";
if($country_type != "") {
    $sql .= 'Country = "' .  $country_type .'"';
}
if($region_type != "") {
    $sql .= 'AND Region = "' .  $region_type .'"';
}
.
.
.
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
            makeListing($row); // call the function
    }
}

已解决 -问题是编码不正确。$winearr[] = "'$country_type";返回$country_type而不是选择的变量。而不是$country_type等于澳大利亚,它是字面上的$country_type每次不管要选择什么。

$winearr[] = "'$rating_type";

应该是

$winearr[] = $rating_type;

程序现在可以正常工作了