У меня есть небольшая проблема с командой MySQL, которая, кажется, не работает правильно. Я строю простую функцию поиска PHP и мне нужно проверить два столбца (одну и ту же таблицу), если что-то в любом столбце нравится, то мне нужно его вывести. Кажется, это работает, если я просто смотрю в один столбец, но если я вставляю оператор OR, он все равно работает, просто кажется, что не каждый раз извлекает правильные данные. Это немного сложно объяснить, поэтому я буду использовать пример ниже.
<?php
$in=$_GET['txt'];
$msg="";
if(strlen($in)>0 and strlen($in) <20 ){
$t=mysql_query("SELECT * FROM es_sermons WHERE searchTags like '$in%' OR serviceName like '$in%'");
while($nt=mysql_fetch_array($t)){
$msg.=$nt[name]."$nt[serviceName]<br>";
}
}
echo $msg
?>
id | serviceName | searchTags
1 | Prayer Positions | Prayer, Fasting, Morning, Pastor, Donnie
2 | Ephesians Part 9 | Ephesians, Pastor, Donnie, Wednesday
3 | Gaining a Clear Vision | Missions, Ministry, Donnie, Pastor, Morning
4 | Downpour Part 7 | downpour, Tim, 3, Evening, Sunday
5 | God is For Me Part 4 | Pastor, Donnie, Morning, God is For Me
Поиск: «Пастор» -> Результаты были: 2, 5 -> Должны были быть 2, 3, 5 -> Почему не было 3?
Поиск: «Донни» -> Результаты были: 5 -> Должен был 1,5 -> Почему был пропущен 1?
Поиск: «Среда» -> Результаты были: НЕТ -> Должен был 2 -> Почему не было 2?
Результаты очень противоречивы. Если бы кто-нибудь мог помочь, я был бы очень признателен. Спасибо!
Попробуйте ниже: —
$t=mysql_query("SELECT * FROM es_sermons WHERE searchTags like '%$in%' OR serviceName like '%$in%'"); // % sign on both side of the search word
Других решений пока нет …