2014-12-11 7 views
1

Я пытаюсь сделать «живой поиск».Mysql: только дисплей наиболее подходящий LIKE-запрос

То, что я хочу

SearchString 1: "% ете%"

SearchString 2: "% эр%"

| City | Land | Artist | 
----------------------------- 
| Köln | Germany | Peter | 
| Bonn | Germany | Bernd | 
| Berlin | Germany | Karl | 
----------------------------- 

Результат 1: Peter

Результат 2 : Германия И Берлин И Peter И BERND

У меня есть событие JQuery KeyUp, в Ajax и это PHP/MySQL скрипт:

$query=$_POST['value']; 

$result='<ul class="db_s_answer">'; 
$abfrage = mysql_query("SELECT * FROM imgdb WHERE artist LIKE '%".$query."%' OR ort LIKE '%".$query."%' LIMIT 5"); 

while ($row = mysql_fetch_object($abfrage)) { 

    $ergebnis=preg_replace("/".$query."/i","<b>$0</b>",HERE THE MOST FITTING VARIABLE,-1); 
    $result.='<li><div><p>'.$ergebnis.'</p></div></li>'; 

} 

$result.='</ul>'; 
+2

** Внимание ** ваш код уязвим для [sql injection] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – andrew

ответ

1

Вы можете использовать UNION:

"SELECT * FROM (
    SELECT artist FROM imgdb WHERE artist LIKE '%".$query."%' 
    UNION 
    SELECT ort FROM imgdb WHERE ort LIKE '%".$query."%' 
) LIMIT 5" 
Смежные вопросы