假设我有这样的HTML:
<form id="form">
Level:
<br/>
<select id="userLevel" name="userLevel">
<option value="">Choose level</option>
<option value="novice">novice</option>
<option value="intermediate">intermediate</option>
<option value="advanced">advanced</option>
</select>
Days per week:
<select id="days" name="days">
<option value="">Days per week:</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<input type="button" id="btn" value="Submit"/>
</form>
<br />
<div id="txtHint"><b>Table goes here...</b></div>
我还有一个包含“user_level”和“days_per_week”列的数据库。我希望我的代码显示该表中的某些行,取决于用户选择的参数。但是,如果他没有选择其中一个,例如'天',程序必须显示行,这取决于仅选择的参数和猜测未选择的参数。如何正确构建SQL查询?检查该变量是否已设置以及是否设置的东西 - 忽略它。
$userLevel = $_POST['userLevel'];
$days = $_POST['days'];
$sql="SELECT *
FROM table
WHERE ifset(user_level){
user_level = $userLevel
} else {
neglect this variable
}
AND ifset(days_per_week){
days_per_week= $days
} else {
neglect this variable
}"
编辑:该表有大约十几列,最终sql查询将使用几个变量。我带来了其中两个,例如。
答案 0 :(得分:0)
这是你的代码:
$q = "";
if(isset($_POST['userLevel']) && $_POST['userLevel'] != "") {
$userLevel = $_POST['userLevel'];
$q .= " and user_level = '$userLevel'";
}
if(isset($_POST['days']) && $_POST['days'] != "") {
$days = $_POST['days'];
$q .= " and days_per_week= '$days'";
}
$sql="SELECT *
FROM table
WHERE id is not null $q"