我需要在一个查询中从2个表中获取信息,我在谷歌搜索它并且它想出了连接? 我有这个代码
mysql_query("SELECT code, url FROM apilinks, links WHERE apilinks.code='$code' and links.code='$code'");
但它似乎不起作用,它超出了这个mysql错误
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/codyl/public_html/projects/tests/tirl/code.php on line 18
我需要在链接表和apilinks表中找到url和code,因为url有一个get变量,'apilinks'的设置与'links'不同 所以它将具有相同的查找网址,但它必须检查两个表
答案 0 :(得分:1)
我不认为您的错误来自您的SQL查询,但无论如何:
您的SQL查询生成笛卡尔积。 apilinks中的每一行都与链接中的每一行连接在一起。这很少是你想要的。您需要在WHERE子句中添加JOIN
条件。
从您的查询中,我猜code
是您要加入的列。
SELECT links.code, url
FROM apilinks, links
WHERE apilinks.code=links.code
AND links.code='$code'
或者使用显式联接,这对您来说可能更明显:
SELECT links.code, url
FROM apilinks INNER JOIN links ON apilinks.code=links.code
WHERE links.code='$code'
答案 1 :(得分:1)
我认为您需要指定所需的code
列:
SELECT links.code, links.url
FROM apilinks, links
WHERE apilinks.code='$code'
AND links.code='$code'
答案 2 :(得分:0)
另一种语法:
mysql_query("SELECT a.code, l.url FROM apilinks a, links l WHERE a.code='$code' and l.code='$code'");
请注意,我假设url字段位于链接表中。
答案 3 :(得分:0)
SELECT a.code, a.url
FROM apilinks a, links l
ON ( a.code = l.code )
WHERE a.code = "$code";