2010-05-17 4 views
0

Я хочу, чтобы иметь возможность искать через таблицу MySQL, используя значения из строки поиска, от url и отображать результаты в виде XML-вывода.Поиск в таблице MySQL и PHP

Я думаю, что у меня есть форматирование и объявление переменных из строки поиска.

Проблема, которую я имею, выполняет поиск по всей таблице, я просматривал SO для предыдущих ответов, и всем, кажется, приходится объявлять каждый столбец в таблице для поиска.

Так, например, мой формат базы данных выглядит следующим образом:

**filesindex** 
-filename 
-creation 
-length 
-wall 
-playlocation 

Прежде всего было бы следующее уместно:

$query = "SELECT * FROM filesindex WHERE filename LIKE '".$searchterm."%' 
      UNION 
      SELECT * FROM filesindex WHERE creation LIKE '".$searchterm."%' 
      UNION 
      SELECT * FROM filesindex WHERE length LIKE '".$searchterm."%' 
      UNION 
      SELECT * FROM filesindex WHERE wall LIKE '".$searchterm."%' 
      UNION 
      SELECT * FROM filesindex WHERE location LIKE '".$searchterm."%'"; 

Или в идеале, есть более простой способ, который требует меньше жестко прописывать в искать таблицу.

Любые идеи?

Благодаря

ответ

2

Не используйте UNION, вы можете цепи условия поиска с помощью AND или OR. И да, вам нужно жестко закодировать поля, если вы хотите, чтобы ваш код оставался простым.

$query = "SELECT * FROM filesindex WHERE filename LIKE '".$searchterm."%' 
     OR creation LIKE '".$searchterm."%' 
     OR length LIKE '".$searchterm."%' 
     OR wall LIKE '".$searchterm."%' 
     OR location LIKE '".$searchterm."%'"; 
2

Запрос может быть переписано как этот

$query = "SELECT * FROM filesindex WHERE filename LIKE '".$searchterm."%' 
      OR creation LIKE '".$searchterm."%' 
      OR length LIKE '".$searchterm."%' 
      OR wall LIKE '".$searchterm."%' 
      OR location LIKE '".$searchterm."%'"; 

, если вы хотите, чтобы найти все записи, для которых один из столбцов содержит условие поиска.

1

Вместо объединения, используйте OR:

$query = "SELECT * 
      FROM filesindex 
      WHERE filename LIKE '".$searchterm."%' 
      OR  creation LIKE '".$searchterm."%' 
      OR  length LIKE '".$searchterm."%' 
      OR  wall LIKE '".$searchterm."%' 
      OR  location LIKE '".$searchterm."%'"; 

Но - я бы рекомендовал использовать файл на основе поисковой системы, как Zend Lucene вместо MySQL.

Смежные вопросы