PHP中的多个条件元素“SELECT * FROM

时间:2013-06-17 10:37:20

标签: php mysql select

目前,我正试图了解一个从数据库中选择的条件代码。

目前,我有代码查看表格,只显示今天或之后的项目。

$today = date("Y-m-d");
mysql_select_db($database_db, $db);
$query_event = "SELECT * FROM campaign WHERE (dateclosed >= '".$today."' || extensiondate >= '".$today."')  AND released = 1  ORDER BY position ASC";

这很好用。

我想要做的是在上面的代码上创建一个条件,因为有时会有一些事件不一定有近邻日期,但我希望它也出现在结果中。

我在'campaign'表格中创建了一个名为“ShowDateRange”的附加字段。这是我可以告诉事件它是否应该有一个附近日期的地方。如果此字段中包含“1”,则确实如此。

我已经阅读了tutes但不太确定如何在call-in中接近if else。我知道这是完全错误的但是......

$query_event = "SELECT * FROM campaign (if ($ShowDateRange == 1) { WHERE (dateclosed >= '".$today."' || extensiondate >= '".$today."')  AND released = 1 } else { WHERE released = 1 }) ORDER BY position ASC

我希望我的帮助请求不会太混乱 - 任何帮助或想法都会非常有价值!

2 个答案:

答案 0 :(得分:3)

MySQL支持开箱即用的IF()条件。只需确保您的语法正确,因为它与PHP if()略有不同。

http://dev.mysql.com/doc/refman/5.0/en/if.html

也是这个

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

答案 1 :(得分:3)

你不能在mysql中使用php语句。要解决这个问题,你应该使用mysql语句的结果并在php中使用它。因此,您可以使用以下代码:

if ($ShowDateRange == 1)
{
   $string = "WHERE (dateclosed >= '$today' || extensiondate >= '$today')  AND released = 1";
}
else {
   $string = "WHERE released = 1";
}

$query_event = "SELECT * FROM campaign $string ORDER BY position ASC";