Php 如何:匹配搜索框中的字符串和适当的案例表数据

Php 如何:匹配搜索框中的字符串和适当的案例表数据,php,mysql,sql,collation,Php,Mysql,Sql,Collation,我有一个表,其中包含以下格式的公司名称:Name Name,我有一个搜索框,它执行MySQL查询以根据搜索字符串返回数据 假设我的表数据如下所示: Company ---------- Name Name Name Name $sql = "SELECT * FROM scoreboard WHERE codcliente = '".$q."' OR nombre LIKE '%".$q."%'"; 依此类推,我的查询如下:

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

假设我的表数据如下所示:

Company
----------
Name Name
Name Name
$sql = "SELECT * 
          FROM scoreboard 
         WHERE codcliente = '".$q."' 
            OR nombre LIKE '%".$q."%'";
依此类推,我的查询如下:

Company
----------
Name Name
Name Name
$sql = "SELECT * 
          FROM scoreboard 
         WHERE codcliente = '".$q."' 
            OR nombre LIKE '%".$q."%'";
现在,当我尝试时,一切正常:
nam
nam
Name
Name N
nam
Name
,以及
Name N
。我的问题是为什么它不能与:
name
name n
一起使用?显然,这可能与表数据中的混合情况有关,但如果是这样,为什么
nam
起作用

以下是
显示创建表格记分板
结果:

CREATE TABLE `scoreboard` (
  `id` int(11) NOT NULL DEFAULT '0',
  `codcliente` text,
  `nombre` text,
  `ejecutivo` text,
  `banca_as400` text,
  `banca_real` text,
  `ingresos` varchar(20) DEFAULT NULL,
  `ciiu` text,
  `division` text,
  `actividad` text,
  `riesgo_industria` text,
  `riesgo_cliente` text,
  `fecha` date DEFAULT NULL,
  `analista` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

为了避免大小写问题,请将它们全部用大写字母进行比较,这样您就不会被大小写所困扰

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

看起来很粗糙,但仍然可靠。

请更新以包含
记分板
表的
创建表
语句。我想查看排序规则,特别是…更新为包含create table code@omg。@rdrgrtz:)实际上,他让您在MySQL中运行
SHOW create table scoreboard
,并将输出添加到这里。对不起,我不确定如何操作。你能发布完整的查询吗?我在MySQL Workbench中得到一个关于默认模式的错误。@karolis Nevermind,让它工作了。发布的结果有问题。如果用户键入小写字母怎么办?不受影响?(我一会儿就要试试了)@Caffein aboce代码,将everuy用户输入以及数据库信息转换为大写。它只在WHERE/OR子句中这样做,因此您的输入和显示不会受到影响。谢谢@caffein!我对它做了一些修改,修改为:
$sql=“从记分板中选择*,其中codcliente=”“$q.”或更低(nombre),如“%”。strtolower($q)。“%”
因为
codcliente
是一个数值,不需要大小写,我喜欢使用小写:)@rdrgrtz lower,upper,由你决定。但是您在问题中显示的create table声明了
nombre text,
,所以我假设它是。。。文本。是的,很抱歉@caffein,只是我正在从Excel工作表迁移,过去我在前导零方面遇到了很多问题,所以我制作了
codcliente
(基本上是客户编号)文本。