魏长东

weichangdong

东邪

php osa系统日期大于或小于查询

其实也不算是优化,就是做了点小小的修改。原有的mysql操作类文件 Medoo.class.php,不支持这种情景

当你的数据表的字段是date类型的(当然现在基本把时间都存成int型了,我存成date类型是有特殊用途),你查询的时候没法大于或者小于某一个日期,但是大于小于同时用没问题。就是下面的代码,当开始或者结束时间一个为空,是没法实现预期目的的。

public static function getCountByInfo($push_start_time='',$push_end_time='',$category='')
        {
                $condition = [];
                $sub_condition = array();
                if ($push_start_time && !$push_end_time) {
                        $sub_condition["push_time[>=]"] = $push_start_time;
                } elseif (!$push_start_time && $push_end_time) {
                        $sub_condition["push_time[<=]"] = $push_end_time;
                } elseif ($push_start_time && $push_end_time){
                        $sub_condition["push_time[<>]"] =array($push_start_time,$push_end_time);
                }
                if ($category) {
                        $sub_condition['category'] = $category;
            }

                if(empty($sub_condition)){
                        $condition = [];
                }else{
                        $condition["AND"] = $sub_condition;
                }
                $db=self::__instance();
                $count = $db->count(self::getTableName(), $condition);
                return $count;
        }

修改的方式是,把上述提到的那个文件加一句代码。

这个函数data_implode,大概是111行,加一行如下

else{
$wheres[] = $match[1] . ' ' . $match[3] . ' ' . "'".{$value}."'";
}

因为传入的数据格式是 2016-06-30格式,是字符串,但是她对字符串没有做处理。