如果第一个失败,如何执行第二个MySQL条件(PHP / MySQLi)

时间:2017-03-29 12:11:28

标签: php mysql mysqli

我需要帮助。我知道我可以在PHP中使用“if ... elseif”,但问题是当前条件已经在一个很长的“elseif”内部所以我不希望它通过创建另一个“if ...”来嵌套它

我的搜索表单(请参见下图)和我的mysqli声明仅适用于一方(Price to)。 我希望能够:当用户选择“类别”(如“Coach”)并输入其中一个价格(来自& to)时,搜索必须按预期正常工作。 如果用户只输入“价格来自”,则该语句从输入的金额开始工作,如果他输入“价格到”,则该语句也适用于输入的金额。

我尝试使用多个运算符(OR / AND ...)但仍未达到我想要的效果。

<div class="container">
  <div class="row">
    <div class="col-xs-6">
<div class="row">
  <div class="col-xs-5">
    <div class="form-group">
      <label for="Minimum">Minimum</label>
      <div class="input-group">
        <input class="form-control" data-val="true" id="Minimum" name="Minimum" type="text" value="0">
      </div>
    </div>
  </div>

  <div class="col-xs-2 text-center"><p>Up To</p></div>

  <div class="col-xs-5">
    <div class="form-group">
      <label for="Maximum">Maximum</label>
      <div class="input-group">
        <input class="form-control" data-val="true" id="Maximum" name="Maximum" type="text" value="100">
      </div>
    </div>
  </div>
</div>      
    </div>
  </div>
</div>

下面是我的sql语句,只有在我工作时才有效 我想

image of web form

1 个答案:

答案 0 :(得分:0)

一种常见方法是在WHERE子句中添加“或输入为空”子句。从逻辑上讲,它可能看起来像这样:

select * 
from tblcoach 
where (price >= ? or ? is null)
  and (price <= ? or ? is null)

然后你将前两个参数绑定到“price from”值,将后两个参数绑定到“price to”值。

提示:现在是开始使用查询参数和预准备语句的好时机。这将使这个和其他事情变得更容易。您可以使用当前可能的SQL注入代码执行相同的操作,可能与空字符串或默认值而不是null进行比较。但这个想法是一样的。逻辑基本上是使用值进行比较(如果它存在)或者如果它不存在则不进行有意义的比较。