我需要在MySQL中进行查询。 但是查询需要通过用户选择的选项进行动态查询。
选项包括日,月,年& SellerID
用户将选择是否要按销售商,天,月和年查看销售历史记录。
但是,假设他想看到 2012年3月的所有销售额。他将 Day 留空并从3月1日到3月31日收到所有销售......
也许他将选项 Month 留空,并设置 Day = 15 和 Year = 2012 ,他将获得销售历史记录从2012年全年到每个月的第15天。
我的程序需要构建一个涵盖他想要查看的内容的查询。
问题是:
我真的需要在代码中使用数千个IF
吗?有没有更好的方法呢?
if( ($day==0) && ($month==0) && ($year>0) ){
$query.="`date`>='{$year}-01-01' AND `date`<='{$year}-12-31'";
}elseif( ($day==0) && ($month>0) && ($year>0) ){
$query.="`date`>='{$year}-{$month}-01' AND `date`<='{$year}-{$month}-31'";
}elseif{
etc...
答案 0 :(得分:3)
您可以在使用前预处理这些值:
$year = $year > 0 ? (int) $year : 2012;
$month = $month > 0 ? (int) $month : 1;
$day = $day > 0 ? (int) $day : 1;
$query .= sprintf("`date` BETWEEN '%4d-%2d-%2d' AND '%4d-%2d-%2d'",
$year, $month, $day,
$year, $month, 31
);
答案 1 :(得分:0)
限制分类年,月,日期格式或月,年月格式或年份格式,表示您在层次结构中排序等级,并且您需要处理3个案例,这些案例仅适用于两个WHERE子句DATE&gt; = DYNAMIC_START_DATE AND DATE&lt; = DYNAMIC_END_DATE(你也可以在这里使用BETWEEN)