2009-12-12 159 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