我需要在一个查询中从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
我需要让它找到url和代码,在链接表和apillinks表,因为url有一个get变量,和' apillinks '的设置不同于'links'url看起来是一样的但需要检查两个表
我不认为你的错误是从你的SQL查询,但无论如何:
SQL查询生成一个笛卡尔积。apillinks中的每一行都与links中的每一行相连。这很少是你想要的。您需要在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'
我想你需要指定你想要的code
列:
SELECT links.code, links.url
FROM apilinks, links
WHERE apilinks.code='$code'
AND links.code='$code'
另一种语法:
mysql_query("SELECT a.code, l.url FROM apilinks a, links l WHERE a.code='$code' and l.code='$code'");
请注意,我假设url字段在链接表中
SELECT a.code, a.url
FROM apilinks a, links l
ON ( a.code = l.code )
WHERE a.code = "$code";