当用户没有做出选择时,将结果发布在 mysql 来自表单 ($_GET) 的 WHERE 语句中

Posting result in mysql WHERE statement from form ($_GET) when no selection is made by a user

抱歉,如果之前有人问过这个问题,我搜索过但找不到合适的答案。对此可能有一个简单的答案,但我很困惑,希望有人能提供一个快速的答案。我的网站上有一个表单,用户可以通过多种方式过滤 数据。表格中的一个 filtering 选项是 'intensity'(低、中、高)。我在 mysql WHERE 语句中将 $_GET 变量用于 post。选择强度选项时它工作正常,但是当用户不选择选项时我没有结果输出。我可以在表单中使用什么作为最终输出 WHERE 语句中所有强度的值。

下面是代码片段...

<form action="workouts.php" method="GET" style="margin-top:5px">
<small>intensity</small>
<select id="intensity" name="intensity"> 
      <option value="" selected="selected"></option> 
      <option value="low">Low</option> 
      <option value="medium">Medium</option> 
      <option value="high">High</option> 
      <option value="auto">Auto</option> 
 </select>
<small> <input type="submit" value="go" style="font-size:12px"/></small>
</form>

<?php  $intensity = $_GET['intensity']; ?>


    

这是我在...中调用 $intensity 的 WHERE 语句...

SELECT * 从数据中 complete = '1' 和 intensity = '$intensity' 按 date DESC

排序

这通常可以通过在您的查询中使用 or 来解决:

SELECT * FROM data 
WHERE complete = '1' 
AND ('' = '$intensity' OR intensity = '$intensity') 
ORDER by date DESC

因此,如果 intensity 为空,第一个将匹配 '' = '' 并且所有行都将匹配。 如果强度为 'low',第一部分将不匹配,但第二部分将在强度设置为低的所有行上匹配。