У меня есть страница PHP, которая вызывает почти один и тот же запрос три раза на странице, и мне хотелось узнать, есть ли более быстрый способ использования этого, чем в трех отдельных случаях.
запросы, по сути,
select * from dbo.function('foo','bar')
where userid = $userid
and status = 'Yes'
select * from dbo.function('foo','bar')
where userid = $userid
and status = 'No'
and value >= 0
select * from dbo.function('foo','bar')
where userid = $userid
and status = 'No'
and value < 0
Каждый раз, когда я отображаю данные в другой таблице, я хотел посмотреть, есть ли более эффективный способ, чем трижды запрашивать базу данных.
Написание функции сделает работу. как то так подойдет:
function foo($id,$status='No',$value='',$sign=''){
$value = (string) $value;
$table = 'table_name';
$allowedSigns = array('=','>','<','>=','<=');
$query = "select * from %s where userid = '%s' and status = '%s'";
if(isset($value) and $value!='' and in_array($sign,$allowedSigns)){
$query .= " and value %s '%d'";
$query = sprintf($query,$table,$id,$status,$sign,$value);
}else{
$query = sprintf($query,$table,$id,$status);
}
return $query;
}
Других решений пока нет …