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

ответ

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 
'); 

Кстати, вы должны бот использовать переменные в строке SQL. Вместо этого используйте параметризованные запросы (mysyqli *).

+0

Это не домашнее задание. Я делаю свою CMS с помощью codeigniter. Спасибо. – shin

+0

+1 для рекомендации параметризованных запросов. Очень хорошая привычка! –

Смежные вопросы