2015-04-22 6 views
0

Я попытался связать тег метаданных с пользователем, я получил связь между ними, но когда я ищу тег, я получаю большой вывод. У меня есть тег с именем Chips, но на выходе 17 разных пользователей. Ни один из них не имеет ничего общего со словом или тегом.Неверный вывод с функцией поиска SQL

Чтобы clearify, что я хочу TODO: Я делаю функцию поиска, которая может выполнять поиск имени пользователя, девиза и теги. http://gyazo.com/d334447761152394ca1eecc392c35e92

<?php 

    $varr = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($url)); 
    $varr = html_entity_decode($url,null,'UTF-8'); 

    $query = $_GET['query']; 
    $min_length = 2; 

    if(strlen($query) >= $min_length){ 

    $query = htmlspecialchars($query); 
    $query = mysql_real_escape_string($query); 

    $raw_results = mysql_query("SELECT * FROM users, user_tags 
       WHERE (`username` LIKE '%".$query."%') OR (`tag` LIKE '%".$query."%') OR (`motto` LIKE '%".$query."%')") or die(mysql_error()); 
    $num_rows = mysql_num_rows($raw_results); 
?> 
+0

Там должен быть соответствующим слово 'Chips' Вот почему результаты возвращаются: P – Umair

+0

Какова связь между ними? –

+0

У них есть соединение из-за user_id. Я думал, что это ничего не вернет, если слово не соответствует. Он должен соответствовать тегу, потому что ни один из пользователей не назван ch, chi, chip, chips в их имени. –

ответ

2

Это ваш запрос:

SELECT * 
FROM users, user_tags 
WHERE . . . 

Проблема не имеет ничего общего с вашей статьи WHERE. Это запятая в FROM. Простое правило: Никогда запятые запятые в разделе FROM. Всегда использовать явно JOIN синтаксис.

Правильный синтаксис выглядит так (но зависит от ваших имен столбцов):

SELECT * 
FROM users u JOIN 
    user_tags ut 
    ON u.userId = ut.userId 
WHERE . . . 
+0

Спасибо, решена моя проблема. –

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