0

在一个页面中,它应该显示从下拉菜单中选择了以下月份的记录,并且在 ?month=March 中设置

所以查询会这样做

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . "' AND finished='0' ORDER BY date ASC";

但它显示完成列中值为 2 的记录,我不希望查询包含此内容。

我试过了

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . "' AND finished='0' OR finished = '1' OR finished = '3' ORDER BY date ASC";

但它显示了不应该出现的不同月份的记录。

所以基本上我希望记录排除记录中不会显示在页面中的值为2的记录。

4

2 回答 2

0

你的第一个查询应该做你想做的事。finished = '2'不应该返回的行。

忽略您可能应该修复的第二个查询中的错误:

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) .
       "' AND (finished='0' OR finished = '1' OR finished = '3') ORDER BY date ASC";

不同之处在于 OR 子句周围的括号,因为 AND 的绑定比 OR 更强。

您还可以使用以下方法更简洁地获得相同的结果IN

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) .
       "' AND finished IN ('0', '1', '3') ORDER BY date ASC";
于 2010-03-23T21:46:10.420 回答
0

AND finished='0' OR finished = '1' OR finished = '3'

AND finished != 2

或者

AND (finished = 0 OR finished = 1 OR finished = 3)

于 2010-03-23T21:46:15.000 回答