[英]MYSQL search query in Joomla
我当前正在编辑一个(非常混乱!)自定义AJAX过滤器组件,以便用户能够按一天中的时间(早晨,下午,晚上)搜索事件的时间。 系统当前按一天中的小时(12、08等)搜索记录,并使用过滤中提交的小时数对数据库执行LIKE搜索以返回结果。
我已将小时数划分为时间数组,如下所示,用于过滤模型:
if($time == 'morning') {
$times = array('07', '08', '09', '10', '11');
}
if($time == 'afternoon') {
$times = array('12', '13', '14', '15', '16');
}
if($time == 'evening') {
$times = array('17', '18', '19', '20', '21');
}
当前使用的查询如下:
if ($time>0){
$query->where('a.startTime LIKE "%'.$time.'%"');
}
我需要更改查询,以便能够查询数据库以检查数据库“时间”字段中的值是否在我的$ times数组中,并且还执行类似的操作,因为它只是我需要的字符串的前两个字符要匹配。 这是因为数据库中的值可以变化(15.30、15.45等),但只需要匹配小时数(15)。
我尝试遍历数组中的项目,创建“ like”和“ or”查询,但没有成功。 有人有什么想法吗? 非常感谢
$per=array('morning'=>array(7, 8, 9, 10, 11),
'afternoon'=>array(12, 13, 14, 15, 16),
'evening'=>array(17, 18, 19, 20, 21));
$query->where('HOUR(a.startTime) IN ('.implode(',',$per[$need].')');
要么
$per=array('morning'=>array('min'=>7, 'max'=>11),
'afternoon'=>array('min'=>12,'max'=> 16),
'evening'=>array('min'=>17,'max'=> 21));
$query->where('HOUR(a.startTime) >= '.$per[$need]['min'].' and HOUR(a.startTime)<='.$per[$need]['max']);
也许像这样
$time=15.30;//for example
if ($time>0){
$time=preg_replace('~\.(.*?$)~','',$time);//time is now 15
$morning = array('07', '08', '09', '10', '11');
$afternoon = array('12', '13', '14', '15', '16');
$evening = array('17', '18', '19', '20', '21');
if(in_array($time,$morning)){
echo 'morning';
}else if(in_array($time,$afternoon)){
echo 'afternoon';
}else if(in_array($time,$evening)){
echo 'evening';
}
$query->where('a.startTime LIKE "%'.$time.'%"');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.