Я хочу построить функцию поиска для моего класса php, который создает строку поиска sql для поиска определенных записей с короткой строкой кода:
$obj -> search(array('key'=>'value'),true_or_false);
Интересно, есть ли какая-нибудь более простая возможность получить собственные результаты ... на самом деле мне нужно построить эту функцию с операционным знаком, чтобы получить возможность для зависимостей AND или "OR" ...
если вы используете это,
$obj->search(array('key'=>'value','+2ndkey'=>'2ndvalue'))
генерирует строку запроса sql с «И» вместо «ИЛИ»
есть предложения?
Я особенно ищу простое и чистое решение, чтобы сделать "LIKE" или "=" динамическим и использовать простой 1-строчный для получения моих результатов ...:)
/*
*/
function search($params,$strict = false)
{
if(!is_array($params)||!count($params))
return false;
$sql = 'SELECT `sampleid` FROM `sampletable` WHERE ';
$n = 0;
foreach ( $params AS $key => $value )
{
$key = mysql_real_escape_string($key);
$op = substr($key,0,1)=='+'?true:false;
$key = $op ? substr($key,1,strlen($key)):$key;
$value = mysql_real_escape_string($value);
$str = sprintf($strict!==false?"`%s` = '%s'":"`%s` LIKE '%%%s%%'",$key,$value);
if($n!=0)
{
$sql .= $op ? ' AND ' : ' OR ';
}
$sql .= $str;
$n++;
}
$sql .= ' LIMIT 25'; //implode($strict!==false?' AND ':' OR ',$req) . ' LIMIT 25';
return $this -> db -> get($sql);
}
прошу прощения за мой английский, это не мой родной язык ...