Как: сопоставить строку из окна поиска и соответствующие данные таблицы дел - PullRequest
0 голосов
/ 17 июля 2011

У меня есть таблица, которая содержит названия компаний в этом формате: Name Name, и у меня есть окно поиска, которое выполняет запрос 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 scoreboard:

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

1 Ответ

1 голос
/ 18 июля 2011

Чтобы избежать проблем с регистром, сравните их все в верхнем регистре, чтобы вас не беспокоили регистр.

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

Кажется хаки, но тем не менее надежным.

...