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
(基本上是客户编号)文本。