如何:匹配搜索框中的字符串和正确的案例表数据

时间:2011-07-17 00:18:05

标签: php mysql sql collation

我有一个包含这种格式的公司名称的表:Name Name,我有一个搜索框,执行MySQL查询以根据搜索字符串返回数据。

假设我的表格数据如下:

Company
----------
Name Name
Name Name

依此类推,我的查询如下:

$sql = "SELECT * 
          FROM scoreboard 
         WHERE codcliente = '".$q."' 
            OR nombre LIKE '%".$q."%'";

现在,我尝试时一切正常:namNamNameName NNAMNAME和{ {1}}。我的问题是为什么它不适用于:NAME Nname?显然它可能与表数据中的混合大小写有关,但如果是这样,为什么name n有效?

以下是nam结果:

SHOW CREATE TABLE scoreboard

1 个答案:

答案 0 :(得分:1)

为了避免出现问题,请将它们全部用大写字母进行比较,这样就不会受到案例的干扰。

$sql = "SELECT * 
          FROM scoreboard 
         WHERE upper(codcliente) = '".strtoupper($q)."' 
            OR upper(nombre) LIKE '%".strtoupper($q)."%'";

看似hacky,但仍然可靠。