2009-12-12 172 views
1

我想加入一个页表和菜单表。MySQL连接问题

CREATE TABLE IF NOT EXISTS `pages` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) NOT NULL DEFAULT '', 
    `keywords` varchar(255) NOT NULL DEFAULT '', 
    `description` varchar(255) NOT NULL DEFAULT '', 
    `path` varchar(255) NOT NULL DEFAULT '', 
    `content` text NOT NULL, 
    `status` enum('active','inactive') NOT NULL DEFAULT 'active', 
    `category_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ; 



CREATE TABLE IF NOT EXISTS `menus` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) NOT NULL, 
    `shortdesc` varchar(255) NOT NULL, 
    `page_id` varchar(60) NOT NULL, 
    `status` enum('active','inactive') NOT NULL, 
    `parentid` int(11) NOT NULL, 
    `order` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=79 ; 

我有以下SQL错误。

function generateTree(&$tree, $parentid = 0) { 
$res = $this->db->query('SELECT M.*, P.name AS PageName 
    WHERE M.parentid = $parentid 
    ORDER BY M.order asc, M.parentid asc 
    FROM menus AS M 
    LEFT JOIN pages AS P 
    ON P.id = M.page_id'); 
... 
... 

你能告诉我做错了吗?

在此先感谢。

+0

你能显示错误信息吗? – Paulraj 2009-12-12 12:00:03

回答

1

你有你的SQL语法混合起来

$res = $this->db->query(' 
SELECT 
M.*, P.name AS PageName 
FROM 
menus AS M 
LEFT JOIN pages AS P ON P.id = M.page_id 
WHERE 
M.parentid = $parentid 
ORDER BY 
M.order asc, M.parentid asc 
'); 

BTW,你应该在机器人的SQL字符串使用变量。改用参数化查询(mysyqli *)。

+0

这不是作业。我正在用codeigniter制作我的CMS。 谢谢。 – shin 2009-12-12 10:30:39

+0

+1用于推荐参数化查询。进入一个非常好的习惯! – 2009-12-12 10:40:15