如何仅在变量存在时将变量插入 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"