Я использую этот Mysql запрос:поиск по нескольким столбцам
WHERE fname LIKE '%{$query}%' OR lname LIKE '%{$query}%' OR zipcode LIKE '%{$query}%' OR city LIKE '%{$query}%'
Допустим, у меня есть следующие данные в моей базе данных:
- Имя: Bill
- Фамилия: Gates
- Zipcode: 12345 AA
- Город: Нью-Йорк
Когда я ищу «Нью-Йорк», я получаю ожидаемый результат (счетные ворота). Но когда я ищу «счет нового йорка», я не получаю никаких результатов.
Каков правильный запрос для поиска по нескольким столбцам?
Является ли ваш стол InnoDB? – Mihai
И почему это заставляет задуматься? Вы запросили строку «bill new york», и ни один из столбцов не содержал ее. Вы получили результат для 'new york', потому что один столбец имел * точно * эту строку. Нет правильных способов, есть способ, который дает вам данные и способ, которым это не так. Использование 'LIKE' для поиска плохо, потому что оно не просто медленное - это, как вам было трудно, выполнить правильно. Google об использовании индексов и поисков FULLTEXT (он работает с механизмом хранения InnoDB), чтобы узнать, как люди ищут несколько слов в нескольких столбцах. –
@mihai Да InnoDB это –