同时使用“LIKE”和“=”标准

时间:2013-04-20 07:02:59

标签: php mysql search

我不知道如何将“=”标准与下面一段代码中的“LIKE”集成。

该代码用于使用多个条件进行搜索。用这个cat_id进行的搜索是okey,我希望我的标准不要成为“LIKE”标准的一部分;相反,它应该是“=”,以便我可以在搜索中得到完全匹配。我们将非常感谢您的帮助。

$criteria = array('ctitle', 'csubject', 'creference', 'cat_id', 'cmaterial', 'ctechnic', 'cartist', 'csource', 'stolen');
$likes = "";
$url_criteria = '';
foreach ( $criteria AS $criterion ) {
        if ( ! empty($_POST[$criterion]) ) {
                $value = ($_POST[$criterion]);
                switch ($criterion) {
                    case 'cat_id':
                        $likes .= " AND `$criterion`='$value'";
                        break;

                    default:
                        $likes .= " AND `$criterion` LIKE '%$value%'";
                        break;
                $url_criteria .= '&'.$criterion.'='.htmlentities($_POST[$criterion]);
            } }
        } elseif ( ! empty($_GET[$criterion]) ) {
                $value = mysql_real_escape_string($_GET[$criterion]);
                switch ($criterion) {
                    case 'cat_id':
                        $likes .= " AND `$criterion`='$value'";
                        break;

                    default:
                        $likes .= " AND `$criterion` LIKE '%$value%'";
                        break;
                $url_criteria .= '&'.$criterion.'='.htmlentities($_GET[$criterion]);
        } //var_dump($likes);
}

$sql = "SELECT * FROM collections WHERE c_id>0" . $likes . " ORDER BY c_id ASC";

2 个答案:

答案 0 :(得分:0)

switch是你的朋友。

$criteria = array('ctitle', 'csubject', 'creference', 'cat_id', 'cmaterial', 'ctechnic', 'cartist', 'csource', 'stolen');
$likes = "";
$url_criteria = '';
foreach ($criteria as $criterion) {
        if (isset($_POST[$criterion]) && !empty($_POST[$criterion])) {
                $value = mysql_real_escape_string($_POST[$criterion]);
                switch ($criterion) {
                    case 'cat_id':
                        $likes .= " AND `$criterion`='$value'";
                        break;

                    default:
                        $likes .= " AND `$criterion` LIKE '%$value%'";
                        break;
                }

Better'n if语句或三元运算符,因为将来很容易扩展。

答案 1 :(得分:0)

    if($criterion=='cat_id')
        $likes .= " AND `$criterion` = '$value'"
    else
        $likes .= " AND `$criterion` LIKE '%$value%'";