2016-11-19 7 views
0

Я пытаюсь найти результаты, похожие на запросы в поиске, например, когда кто-то ищет «tes». Я хочу, чтобы «Test McTestFace» появился.Попытка поиска базы данных MySQL в PHP с помощью PDO

Я попытался использовать методы LIKE и MATCH AGAINST и, похоже, не работает. При использовании MATCH AGAINST ничего не происходит, тогда как при использовании LIKE появляются только прямые совпадения.

Мой код MATCH ПРОТИВ:

if (isset($_POST['submit'])) 
{ 
    $query = $db->prepare("SELECT * FROM accounts WHERE MATCH (name) AGAINST (:query)"); 
    $query->execute(array('query' => $_POST['query'])); 
    $result = $query->fetch(); 
} 
print_r($result); 

Мой код LIKE:

if (isset($_POST['submit'])) 
{ 
    $query = $db->prepare("SELECT * FROM accounts WHERE name LIKE :query"); 
    $query->execute(array('query' => $_POST['query'])); 
    $result = $query->fetch(); 
} 
print_r($result); 

Извините и спасибо.

+0

Я не понимаю, именно то, что именно вы хотите достичь. Не могли бы вы попытаться сформулировать краткий вопрос? – Bex

+0

@Bex Извините, что вы не найдете его достаточно кратким, (пока он был дан ответ). Я пытался спросить, как правильно использовать значение LIKE (или MATCH AGAINST) для MySQL запросов. Для конкретных рассуждений я пытаюсь создать простую форму поиска, которая позволяет вводить строчную строку и получать список или пользователей, которые соответствуют. – qwerty77asdf

ответ

2

Если вы используете LIKE, вам нужно обернуть запрос с помощью подстановочного знака %, чтобы он работал.

От docs:

С LIKE Вы можете использовать следующие два подстановочные символы в шаблоне:

% совпадает с любым количеством символов, даже нулевых символов.

_ соответствует одному символу.

т.е.

$query->execute(array('query' => '%' . $_POST['query'] . '%')); 
+0

Большое вам спасибо! Это сработало. – qwerty77asdf

+0

Можно ли сортировать, исходя из того, насколько похожи результаты? – qwerty77asdf

+1

Возможно, самым простым способом было бы «ЗАКАЗАТЬ BY name» – bcmcfc

1

Для сопоставления с подстановочными знаками необходимо использовать '%'.$_POST['query'].'%'. (для LIKE).

+1

Отдайте его другому, это более полно, следовательно, лучше. – junkfoodjunkie

+0

Извините - удалил мой комментарий. Сделаю, спасибо. – qwerty77asdf

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