目前,我正试图了解一个从数据库中选择的条件代码。
目前,我有代码查看表格,只显示今天或之后的项目。
$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
我希望我的帮助请求不会太混乱 - 任何帮助或想法都会非常有价值!
答案 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";