我有一个包含以下格式的公司名称的表:名称名称
,并且我有一个搜索框,该搜索框执行 MySQL 查询以根据搜索字符串返回数据。
假设我的表格数据如下所示:
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
有效?
这是SHOW CREATE TABLE记分板
结果:
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)."%'";
看起来很老套,但仍然可靠。
关于php - 如何: Match string from search box and proper case table data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6721125/