我有个access表,要读数据库并建个二级联动菜单,父菜单用了一个while和movenext()循环读取,有一个父菜单下有子菜单项,也有while和movenext()循环读取,可以就不行了,PHP报错不能运行!代码大概如下:$sql="select * from Channel where f_id=0 order by id";
$readlist=new readAccess();  //此处用一个类实现读取Access
$readlist->db_open();
$readlist->rs_open($sql,1,1);
if(!$readlist->rs_eof()) { while (!$readlist->rs_eof()) {
if ($GLOBALS["about_id"]==strval($readlist->rs("id")))
echo "&nbsp;<span class='dq'>· ".$readlist->rs("title")."</a></span><div class=\"line\"></div>";
else {
echo "&nbsp;<a href='?pid=".$readlist->rs("id")."'>+ ".$readlist->rs("title")."</a><div class=\"line\"></div>";

}
$sql3="select * from Channel where f_id<>0 and f_id=".$readlist->rs("id")." order by id";
$readlist3=new readAccess();
$readlist3->conn_execute($sql3);
if(!$readlist->rs_eof()) {
while(!$readlist->rs_eof()) {
echo "&nbsp;<a href='?pid=".$readlist3->rs("id")."'>- ".$readlist3->rs("title")."</a><div class=\"line\"></div>";
$readlist3->rs_movenext();
}
}
$readlist->rs_movenext(); } }ACCESS表结构大概如下:
/***************************************/
字段名:id    title      f_id
第一行:1     公司概况   0
第二行:2     公司章程   0
第三行:3     公司相册   0
第四行:4     组织机构   0
第五行:5     领导关怀   3
第六行:6     业务活动  3
/***************************************/请高手赐教,本人是新手。

解决方案 »

  1.   

    补充点:
    $about_id=intval($_GET["pid"]);  //网址查询字符串
    请大家帮帮忙,小弟我实在找不出错误在哪,
      

  2.   

    你的DB类用的是PDO类操作的吗?
      

  3.   

    不是。
    我把类代码也放上。****************************************
    <?php
    include_once("conn.inc.php");
    class readAccess {function db_open(){
         //连接数据库
         
         $GLOBALS["conn"] = new com("ADODB.Connection");
         $connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".realpath($GLOBALS["db"]);
         //$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".realpath($GLOBALS["db"]);
         $GLOBALS["conn"]->open($connstr);
         $GLOBALS["rs"] = new com("ADODB.RecordSet"); 
    }
    function db_close(){
        //关闭数据库
         $GLOBALS["conn"]->close();
    }
    function conn_execute($sql){
          //执行sql
         $GLOBALS["conn"]->Execute(iconv("gb2312","UTF-8",$sql));
    }
    function rs_open($sql,$cursorType,$lockType){
         //RecordSet的open方法
         $GLOBALS["rs"]->Open($sql,$GLOBALS["conn"],$cursorType,$lockType);
    }
    function rs_close(){
         //关闭RecordSet
         $GLOBALS["rs"]->close();
    }
    function rs_recordcount() {
         //RecordSet的recordcount方法
         return $GLOBALS["rs"] -> recordcount();
    }
    function rs_eof(){
        //RecordSet eof或bof
         return $GLOBALS["rs"] -> eof||$GLOBALS["rs"] -> bof?true:false;
    }
    function rs_move($n){
         //移动指针
         $GLOBALS["rs"]->Move($n);
    }
    function rs_movenext(){
         //移动指针+1
         $GLOBALS["rs"]->MoveNext();
    }
    function rs($fieldName){
         //移动指获取指定字段值
         return iconv("gb2312","UTF-8",$GLOBALS["rs"]->Fields[$fieldName]->Value);
    }
    }
    ?>**********************************不懂怎么就是不能用两个movenext.