如果变量存在,我怎样才能将变量插入SQL查询?

时间:2016-02-14 15:09:48

标签: mysql

假设我有这样的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查询将使用几个变量。我带来了其中两个,例如。

1 个答案:

答案 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"