好吧,这是一团糟,我现在迷失了。我正在尝试搜索一个可以搜索单词的网站,它将通过一个名为designs
的表来搜索该表中多个列的单词。我有这个工作,直到我决定我也想要搜索另一个成员的username
。在design
表中,有一个名为user
的列,其中与id
内的users
匹配。我希望这是有道理的,因为我真的不想画一张桌子..
$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
是用户正在搜索的内容。我希望能够通过搜索{{1}来显示用户所做的任何designs
将username
连接到designs.user
之后的用户,但它只是不起作用,任何想法?
另外users.id
在“where子句”中给出了“未知列'名称'”的错误
答案 0 :(得分: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,请这些方法非常容易不要使用它们 如果您使用其他API(如mysqli或PDO),则无需使用mysql_real_escape_string
来确保查询安全。