使用搜索功能SQL

时间:2015-04-22 10:31:11

标签: php sql string output

我尝试将元数据标签连接到用户,我得到了它们之间的关系,但是当我搜索标签时,我得到了大量的输出。我有一个名为Chips的标签,但输出是17个不同的用户。没有人对这个词或标签没有任何反应。

要清除我尝试过的内容: 我正在制作可以搜索用户名,座右铭和标签的搜索功能。 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);
?>

1 个答案:

答案 0 :(得分: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 . . .