2015-02-09 5 views
1

У меня есть таблица:Поиск данных в базе данных. PHP

|-id-|--------name-------| 

| 1 | George Martin | 

я вытягиваю данные, такие как:

function search ($query) 
{ 
    $query = trim($query); 
    $query = mysql_real_escape_string($query); 
    $query = htmlspecialchars($query); 

    if (!empty($query)) 
    { 
     if (strlen($query) < 3) { 
      $text = '<p>Enter 3 or more letters.</p>'; 
     } else if (strlen($query) > 128) { 
      $text = '<p>Too many letters.</p>'; 
     } else { 
      $q = "SELECT * 
        FROM `table` WHERE `name` LIKE '%$query%'"; 

      $result = mysql_query($q);... 

Когда я печатаю в моем поиске "Джордж", он считает - "Джордж Мартин"

Когда Я набираю в своем поиске «Мартин», он находит - «Джордж Мартин»

Когда я набираю в своем поиске «Martin George», он меня не найдет.

Есть ли способ сделать последнее натяжение без создания нового стола с name и second name?

+0

Вы могли бы рассмотреть возможность сделать индекс FTS на столе и поиск с помощью MATCH вместо LIKE. –

+0

вы можете разделить '$ query' и сопоставить один, единственный в запросе? – Uzair

+0

Как http://php.net/manual/en/migration55.deprecated.php говорит: «Исходное расширение MySQL теперь устарело и будет генерировать ошибки E_DEPRECATED при подключении к базе данных. Вместо этого используйте расширения MySQLi или PDO_MySQL» , Вы должны использовать PDO: http://php.net/manual/en/book.pdo.php – Mawg

ответ

-1

Ваш запрос должен быть

SELECT * FROM `table` WHERE `name` LIKE '%$query%' or `name` ='$query'"; 
+0

даже не упоминать о том, что безопасно избегать его переменных? – Tschallacka

+1

@MichaelDibbets как насчет добавления ответа с учетом вопросов безопасности? – Beatles1692

+1

Ему не придется беспокоиться о том, что он использует PDO (как и должно быть, вместо mysql). – Mawg

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