2016-01-11 2 views
0

Мой код выглядит следующим образом:Как искать список массив запросов PHP

$query = "Select country, name, job 
      from tab1.employee where name like ('%".$crit."%')"; 

$result = mysql_query($query); 
if (mysql_num_rows($result) > 0) { 
    echo '<table BORDER=1 >'; 
    echo '<tr><th>Country</th><th>name</th><th>job</th></tr>'; 
    while ($r = mysql_fetch_assoc($result)) { 
     echo '<tr>'; 
     echo '<td>'.$r['country'].'</td>'; 
     echo '<td>'.$r['name'].'</td>'; 
     echo '<td>'.$r['job'].'</td>'; 
     echo '</tr>'; 
    } 
    echo '</table>'; 

Это мой код для поиска один «имя» в таблице сотрудников. Моя проблема состоит в том, чтобы найти более одной строки, то есть («Питер», «Жерар», «Джозеф» ...).

код HTML код стороне

<form method="POST" action="search.php" > 
<input type="text" name="criterio"> 
<select name="dropdown"> 
<option value="Select">-- Select --</option>} 
<option value="SKU-config">job</option> 
<option value="UPC">name</option> 
</select> 
<input type="submit" value="search"> 
</form> 
+0

Вы ищете предложение 'IN'? * AFAIK * предложение 'IN' не работает с предложением' LIKE'. – Script47

+2

Если это ваш * настоящий * код, у вас есть синтаксическая ошибка. Кроме того, вы не «запрашивали». и откуда берется «$ result»? Слишком много неизвестных здесь. –

+0

'LIKE% something% OR LIKE% somethingelse% OR LIKE ...' – Steve

ответ

1

Есть много вещей, которые могут помочь. Один из них:

$query = "SELECT country,name,job FROM tab1.employee WHERE name IN ('Peter','Gerard','Joseph')"; 

Еще одно:

$query = "SELECT country,name,job FROM tab1.employee WHERE FIND_IN_SET(name, ('Peter','Gerard','Joseph'))"; 

Тот, я считаю, лучше всего это:

$query = "SELECT country,name,job FROM tab1.employee WHERE name REGEXP ('Peter','Gerard','Joseph')"; 

Я надеюсь, что вы найдете то, что вам нужно в этом!

+0

Я склонен думать, что один или все из них должны работать на ОП. Тем не менее, и без комментариев от них или зеленого тика рядом с вашим ответом, либо означает, что они сняли и не вернутся до ужина, или что он не решил его для них. Я тяну к тому факту, что именно так они хранят свои данные, и я, во-первых, не ответил бы на этот вопрос. Слишком много неизвестных. Надеюсь, вы не попали в кроличью нору ;-) –

+0

@ Fred-ii-: Кто знает. Но спасибо за беспокойство. Я тоже тебя люблю Фред хаха: P –

+0

@ Chris это немного помогает, но идея состоит в том, чтобы написать в поле список имен, а затем запустить запрос в бэкэнд. Что я могу сделать, изменяя имена peter .... переменной, которая получает значение текстового поля. – java2dev

0

Вы не закрыть строку запроса. В приведенной ниже строке запроса вы получите все строки с именами Peter, Gerard и Joseph.

Использование инструкции IN будет самым чистым способом поиска нескольких совпадений. В противном случае у вас будет много «OR name LIKE» в зависимости от того, сколько имен вы хотите сопоставить.

$query = " 
SELECT country,name,job 
FROM tab1.employee 
WHERE name IN ('Peter','Gerard','Joseph') 
"; 
Смежные вопросы