如何在codeigniter中的循环中进行循环?

时间:2012-02-17 11:07:48

标签: php codeigniter

我的表faq_categories包含以下字段

CREATE TABLE IF NOT EXISTS `faq_categories` (
  `catid` int(11) NOT NULL AUTO_INCREMENT,
  `categoryname` varchar(37) NOT NULL,
  `parentid` int(11) DEFAULT NULL,
  `description` text NOT NULL,
  `metatags` text NOT NULL,
  `sorder` int(11) NOT NULL,
  `visible` tinyint(4) NOT NULL,
  `categoryphoto` varchar(255) NOT NULL,
  PRIMARY KEY (`catid`),
  KEY `parentid_fk` (`parentid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=52 ; 

在我的PHP代码中,我有以下代码:

$query="SELECT * FROM categories";
    $result=mysql_query($query);
    $num=mysql_num_rows($result);
    $i=0;
    while ($i < $num) {
        $id=mysql_result($result,$i,"id");
        $name=mysql_result($result,$i,"name");
        $parentid=mysql_result($result,$i,"parentid");
        $categoryphoto=mysql_result($result,$i,"categoryphoto");
        $sorder=mysql_result($result,$i,"sorder");
        $visible=mysql_result($result,$i,"visible");


 echo $id;

echo $name;

// THIS IS WHAT I DON'T KNOW HOW TO DO IN CODEIGNITER
// HOW TO GET THE CATEGORYNAME ON BASE ON PARENTID

 if ($parentid) {

                        //echo $parentid;
                         $query1="SELECT name as parentname FROM categories WHERE id = ".$parentid; 
                         echo mysql_result(mysql_query($query1),0,"parentname");

                        } else {
                            echo "Root Category";
                        } 

我如何在codeigniter中执行此操作?如果可能的话,我想避免加入。

1 个答案:

答案 0 :(得分:0)

首先:我认为你可以查看Database class 第二:你为什么不想使用连接?如果你讨厌它,也许你可以使用FROM table1,table2 :)恕我直言较少的查询更好:)

修改 安装sql-gui(例如phpMyAdminadminer ...)并尝试一些查询!一个类似你需要的例子:

SELECT *, catjoin.categoryname AS parentname
FROM categories
JOIN categories AS catjoin ON (catjoin.catid=categories.parentid)

您可以使用IFNULL扩展catjoin.categoryname以返回ROOT category