2014-01-05 157 views
0

为什么n.author='$host[id]'被忽略?为什么MySQL语句被忽略?

$host[id]=5; 
SELECT 
n.id,n.name,n.text, 
r.title, 
COUNT(c.news_id) comments 
FROM news n LEFT JOIN rub r 
ON 
r.news_id=n.id 
LEFT JOIN comments c 
    ON 
n.id = c.news_id AND c.status='1' AND n.author='$host[id]' 
GROUP BY n.id 
ORDER BY n.id DESC LIMIT 10 

我只需要那些行,其中“新闻”。“作者” = $主机[ID],但在执行此查询我得到了所有从表中的消息。为什么会发生?

+1

n是左表,在左连接你左表中的所有条目。教育你自己关于不同的连接类型。 – hakre

+1

请参阅[关于连接的最佳解释](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) –

+0

请*不要*直接使用变量在你的SQL语句中。这让您打开SQL注入。您应该创建语句并将输入作为参数传递。 –

回答

0
$host[id]=5; 

SELECT n.id,n.name,n.text, r.title, COUNT(c.news_id) comments 
FROM news n 
LEFT JOIN rub r ON r.news_id = n.id 
LEFT JOIN comments c ON c.news_id = n.id AND c.status = '1' 
WHERE n.author = '$host[id]' 
GROUP BY n.id 
ORDER BY n.id DESC LIMIT 10 
0
$host['id']=5; 
SELECT 
n.id,n.name,n.text, 
r.title, 
COUNT(c.news_id) comments 
FROM news n LEFT JOIN rub r 
ON 
r.news_id=n.id 
LEFT JOIN comments c 
    ON 
n.id = c.news_id AND c.status='1' AND n.author="'{$host['id']}'"; 
GROUP BY n.id