如何仅在变量存在时将变量插入 SQL 查询?
How can I insert variable into SQL query only if it exist?
假设我有这样的 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" 列的数据库。我希望我的代码显示 table 中的某些行,具体取决于用户选择的参数。但是,如果他没有选择其中之一,例如 'days',程序必须显示仅取决于所选参数的行,并忽略未选择的参数。如何正确构造 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
}"
编辑:table 有大约十几个列,最终 sql 查询将使用多个变量进行操作。我带了两个来举例。
这是您的代码:
$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"
假设我有这样的 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" 列的数据库。我希望我的代码显示 table 中的某些行,具体取决于用户选择的参数。但是,如果他没有选择其中之一,例如 'days',程序必须显示仅取决于所选参数的行,并忽略未选择的参数。如何正确构造 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
}"
编辑:table 有大约十几个列,最终 sql 查询将使用多个变量进行操作。我带了两个来举例。
这是您的代码:
$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"