codeigniter加入问题

时间:2011-01-11 22:43:57

标签: codeigniter select join where

大家好,我有一个问题,当我尝试加入我的评论表时,它什么都没有显示

这是我的代码

$this->db->select('*,users.profil_billed as profil_billed, forum_traad.id as traad_id');
$this->db->from('forum_traad');
$this->db->join('users', 'forum_traad.brugernavn = users.username');
$this->db->where('forum_traad.fk_forum_kategori', $id);
$this->db->join('forum_kommentare', 'forum_traad.id = forum_kommentare.fk_forum_traad');
$this->db->where('forum_kommentare.fk_forum_traad', 'forum_traad.id');
$this->db->order_by("forum_traad.id", "DESC");

它然后我把它放在它什么都没显示,我不知道为什么..我需要一些左连接,右连接等?我已经尝试了所有这些:d

$this->db->join('forum_kommentare', 'forum_traad.id = forum_kommentare.fk_forum_traad');
$this->db->where('forum_kommentare.fk_forum_traad', 'forum_traad.id');

kommentare =评论 traad = thread brugernavn =用户名 kategori = categori

它的丹麦语,

抱歉,我的坏英语希望有人可以帮助我


我的数据库结构是这个,我使用mysql

CREATE TABLE `forum_kategori` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `kategori` text NOT NULL,
  `beskrivelse` mediumtext NOT NULL,
  `godkendt` varchar(4) NOT NULL DEFAULT 'ja',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10;

CREATE TABLE `forum_kommentare` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fk_forum_traad` int(11) NOT NULL,
  `brugernavn` text NOT NULL,
  `indhold` mediumtext NOT NULL,
  `dato` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `time` text NOT NULL,
  `godkendt` varchar(4) NOT NULL DEFAULT 'ja',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=28;

CREATE TABLE `forum_traad` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `overskrift` text NOT NULL,
  `indhold` mediumtext NOT NULL,
  `fk_forum_kategori` int(11) NOT NULL,
  `brugernavn` text NOT NULL,
  `dato` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `godkendt` varchar(4) NOT NULL DEFAULT 'ja',
  `time` text NOT NULL,
  `status` varchar(8) NOT NULL DEFAULT 'aaben',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4;

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(80) NOT NULL,
  `password` text NOT NULL,
  `kon` varchar(5) NOT NULL,
  `alder` text NOT NULL,
  `hood` varchar(4) DEFAULT NULL,
  `fornavn` varchar(60) DEFAULT NULL,
  `efternavn` varchar(100) DEFAULT NULL,
  `city` text,
  `ip` varchar(20) DEFAULT NULL,
  `level` text,
  `email` text,
  `point` int(11) NOT NULL,
  `oprettet` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `fritekst` mediumtext NOT NULL,
  `profil_billed` text NOT NULL,
  `online` varchar(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=31;

并且它没有返回任何错误它只显示一条消息我已经完成了一个else语句,说“此类别上没有线程”,我尝试使用左连接,右连接内连接完全连接,你们所有它:S

3 个答案:

答案 0 :(得分:0)

您应该尝试在联接中使用left联接并从那里开始工作。如果这不起作用,则表之间没有链接。

答案 1 :(得分:0)

试试这段代码:

$this->db->select('*,users.profil_billed as profil_billed, forum_traad.id as traad_id');
$this->db->from('forum_traad');
$this->db->join('users', 'forum_traad.brugernavn = users.username');
$this->db->join('forum_kommentare', 'forum_traad.id = forum_kommentare.fk_forum_traad');
$this->db->where('forum_traad.fk_forum_kategori', $id);
$this->db->order_by("forum_traad.id", "DESC");

答案 2 :(得分:0)

您可以在$this->db->get()之后使用

print $this->db->last_query();

并检查出了什么问题。