0

好吧,这真是一团糟,我现在很迷茫。我正在尝试搜索一个站点,您可以在其中搜索一个单词,它将通过一个名为designs通过多个列搜索该单词的表。我一直在工作,直到我决定我想要选择也搜索username另一个成员的选项。在表中design,有一个名为userin 的列与. 我希望这是有道理的,因为我真的不想画一张桌子..idusers

$result = mysql_query("
SELECT designs.*, users.* 
FROM designs, users 
WHERE type LIKE '%" . mysql_real_escape_string($search1) . "%' 
OR title LIKE '%" . mysql_real_escape_string($search1) . "%' 
OR tags LIKE '%" . mysql_real_escape_string($search1) . "%' 
OR description LIKE '%" . mysql_real_escape_string($search1) . "%' 
OR users.username = " . mysql_real_escape_string($search1) . " 
ORDER BY designs.id 
DESC
");

这就是它当前的样子,$search1也是用户正在搜索的内容。我希望能够显示用户在连接到后designs通过搜索用户所做的任何内容,但它只是不起作用,任何想法?usernamedesigns.userusers.id

还给了我“where子句中的未知列' namehere mysql_error()'”的错误

4

1 回答 1

1

内连接的查询是这样的,你必须指定表名designs.<columnname>才能查询它们。

    SELECT designs.*, users.* 
    FROM designs
    INNER JOIN users on users.id = designs.user
    WHERE designs.type LIKE '%<SEARCH TEXT>%' 
    OR desings.title LIKE '%<SEARCH TEXT>%' 
    OR designs.tags LIKE '%<SEARCH TEXT>%' 
    OR designs.description LIKE '%<SEARCH TEXT>%' 
    OR users.username = '<USER ID>' 
    ORDER BY designs.id 
    DESC

简单的语法是

INNER JOIN <table name> <alias> ON <first table>.<column name> = <second table>.<column name>

巨大的问题是你正在使用mysql_*API,请这些方法很容易受到攻击,不要使用它们

如果您使用 mysqli 或 PDO 等其他 API,则不必使用它mysql_real_escape_string来确保查询安全。

于 2013-07-21T01:00:30.633 回答