搜索功能输出错误 SQL

Wrong output with search function SQL

我尝试将元数据标签连接到用户,我得到了它们之间的关系,但是当我搜索标签时,我得到了很大的输出。我有一个名为 Chips 的标签,但输出是 17 个不同的用户。 None 其中与单词或标签无关。

要弄清楚我要做什么: 我正在制作一个可以搜索用户名、座右铭和标签的搜索功能。 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);
?>

这是您的查询:

SELECT *
FROM users, user_tags
WHERE . . .

问题与您的WHERE条款无关。它是FROM中的逗号。简单规则:从不FROM 子句中使用逗号。 始终 使用显式 JOIN 语法。

正确的语法看起来更像是这样(但取决于您的列名):

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