Я пытаюсь создать функцию поиска, которая будет искать несколько столбцов, чтобы найти соответствие по ключевому слову. Например, когда пользователь вводит ключевое слово для поиска, мне нужно провести поиск по пяти столбцам категории и вернуть соответствующие имена строк для всех строк, которые содержат ключевое слово, в любом из столбцов категории. Код выглядит следующим образом:Поиск по нескольким столбцам
<?php
mysql_connect($dbhost, $dbuser, $dbpass) or die("could not connect.");
mysql_select_db($dbname) or die("could not find database.");
$result = "";
//collect info from database
if(isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
//SQL query
$query = mysql_query("SELECT name FROM institutes WHERE category1 LIKE '%$searchq%' OR category2 LIKE '%$searchq%' OR category3 LIKE '%$searchq%' OR category4 LIKE '%$searchq%' OR category5 LIKE '%$searchq%'") or die("No records found.");
$count = mysql_num_rows($query);
if($count == 0)
{
$output = "There's no search result";
}
else {
while($array = mysql_fetch_assoc($query))
{
?>
<li><?php echo $array['name'];?></li>
<?php
}
?>
}
}
</ul>
Я пробовал различные способы поиска, но каждый раз, либо имеется ошибка или код просто возвращает каждое имя строки, независимо от условий. решения этой проблемы будут оценены.
Полный текстовый поиск может быть лучшим вариантом. http://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html – user1751825
вы уверены, что ваш '$ searchq = preg_replace (" # [^ 0-9a-z] #i "," " , $ searchq); 'правильная работа? – Exception
Хммм, а) Вы пытались выполнить эхо '$ searchq' по линии preg_replace? б) Если возникают ошибки, что сказать? Общий подход и SQL кажутся мне полезными (не пробовав или не зная ваши данные ...). – ahuemmer