【问题标题】:PHP search using == and not case sensitivePHP 搜索使用 == 且不区分大小写
【发布时间】:2017-06-30 09:29:47
【问题描述】:

我有一个 PHP 代码,我想使用 == 运算符只搜索确切的术语,并且搜索不区分大小写。当我将 LIKE 更改为 == 时,第一件事不起作用。

<?php
$con = mysql_connect('********','********','********');
mysql_select_db("********",$con);

function search_results($keywords){
    $returned_results = array(); 
    $where ="";

    $keywords = preg_split('/[\s]+/',$keywords);
    $total_keywords = count($keywords);

    foreach($keywords as $key=>$keyword){
        $where .= "`keywords` LIKE '%$keyword%'";
        if($key != ($total_keywords -1)){
            $where .=" AND ";
        }
    }
    $results = "SELECT name, image_url, game_url, alt FROM search_games WHERE $where";
    $results_num = ($results =mysql_query($results))? mysql_num_rows($results):0;
    if($results_num === 0){
        return false;
    }
    else{
        while ($results_row = mysql_fetch_assoc($results)) {
    $returned_results[] = array(
        'name' => $results_row['name'],
        'image_url' => $results_row['image_url'],
        'game_url' => $results_row['game_url'],
        'alt' => $results_row['alt']
    );
}
        return $returned_results;
    }
}
?>

【问题讨论】:

  • 请开始使用mysqli_ 或PDO,因为mysql_ 在PHP7 中已被弃用和删除

标签: php mysql search


【解决方案1】:

使用MySqlLOWER函数进行不区分大小写的搜索:

...

foreach ($keywords as $key => $keyword) {
    $keyword = strtolower($keyword);
    $where .= " LOWER(`keywords`) LIKE '%$keyword%'";
    if ($key != ($total_keywords -1)) {
        $where .= " AND ";
    }
}

【讨论】:

    【解决方案2】:

    您可以将 foreach 替换为以下代码:

    foreach($keywords as $key=>$keyword){
        $keyword = strtoupper($keyword);
        $where .= "upper(`keywords`) = '$keyword'";
        if($key != ($total_keywords -1)){
            $where .=" AND ";
        }
    }
    

    上面的代码将$keyword字符串变为大写,然后在sql查询中将它与upper(keywords)进行比较,所以比较时它们都是大写的。

    来源:

    【讨论】:

    • 我用的是lower的解决方案。这个解决方案实际上是相同的,但是逗号upper(keywords)的位置错误,应该是大写(keywords)。但是 = 运算符不起作用。
    • 是的,你是对的。感谢您的指正。我编辑了它。现在可以用了吗?
    • 较低的解决方案可以,但是 operator = 不起作用。
    • 运算符 = 不起作用是什么意思?在哪一行代码上?
    • (顺便在更正中删除了`符号)
    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2013-09-26
    相关资源
    最近更新 更多