У меня есть эта форма, которую я использую для поиска определенных записей из базы данных.
Это запрос:
$sql = "select * from `hostess` where first_name_en like '%$term' or family_name_en like '%$term%' order by `family_name_en` asc";
Проблема в том, что если я ищу, например, ele, приходят все имена, которые содержат ele , такие как elena и т. Д. И т. Д., Но если я напишу elena, ничего не появится.
Почему ?
Есть ли причина, по которой вы не использовали %
в конце значения first_name_en
?
$sql = "select * from `hostess` where first_name_en like '%$term%' or family_name_en like '%$term%' order by `family_name_en` asc";
Изменить: для проблемы с верхним регистром и нижним регистром:
$term = strtolower($term); $sql = "select * from `hostess` where lower(first_name_en) like '%$term%' or lower(family_name_en) like '%$term%' order by `family_name_en` asc";
Ваш недостаток% в вашем первом LIKE. В настоящее время ваше высказывание ищет любое имя, которое заканчивается на элементе.
LIKE '%ele'
– будет соответствовать всем, что заканчивается на элементе LIKE 'ele%'
– будет соответствовать всем, что начинается с элемента LIKE '%ele%'
– будет соответствовать чему-либо элементу в нем $sql = "select * from `hostess` where first_name_en like '%$term%' or family_name_en like '%$term%' order by `family_name_en` asc";
% $% Срок
Использовать это