调用该脚本的页面允许用户从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;
程序现在可以正常工作了