while(ocifetchinto($stmt,$row,OCI_ASSOC)){
while(ocifetchinto($stmt,$row,OCI_ASSOC))
检查这两个while是否存在死循环。

解决方案 »

  1.   

    <?php
        include_once 'include/pdmdblogon.php';
        
        if(!$conn){
            echo "注意:当前无法连接PDM数据库。";//连接错误提示
            exit;}
        //获得顶节点
        $mysql = "SELECT UPCODE,PRODUCTDWGCODE,UPNAME,count(UPCODE) as T FROM XTDETAMSALL_DETAIL";
        $mysql .= " WHERE UPCODE = PRODUCTDWGCODE GROUP BY UPCODE,PRODUCTDWGCODE,UPNAME";
        
        $stmt = ociparse($conn,$mysql);    
        if(!$stmt)
        {
            echo "ERROR - Could not parse SQL statement.";
            exit;
        }        
        ociexecute($stmt);
        while(ocifetchinto($stmt,$row,OCI_ASSOC)){
            extract($row);
            $icon = "<a href='javascript:expand(\"div$UPCODE\");'>+</a>";
            $out = $icon."[".$UPCODE."]".$UPNAME;//输出根节点
            echo "<div id='div".$UPCODE."'>".$out;
            //如果存在孩子节点的话,就递归调用getNode函数
            getNode($UPCODE,$PRODUCTDWGCODE,0);
            echo "</div>";
            
        }
        
        function getNode($upcode,$productdwgcode,$node_level)
        {
            global $conn;
            if(!$conn){
            echo "注意:当前无法连接PDM数据库。";//连接错误提示
            exit;}
            
              $sql = "SELECT  UPCODE,UPNAME,DITEM,DCODE,DNAME,PRODUCTDWGCODE  FROM XTDETAMSALL_DETAIL";
            $sql .= " WHERE UPCODE = '$upcode' AND PRODUCTDWGCODE = '$productdwgcode'";
            $sql .= " ORDER BY DITEM";
            $stmt= ociparse($conn,$sql);    
            if(!$stmt)
            {
                echo "ERROR - Could not parse SQL statement.";
                exit;
            }        
            ociexecute($stmt);
            $node_level = $node_level+1    ;    
        
            while(ocifetchinto($stmt,$row,OCI_ASSOC))
            {
                extract($row);            
                $mysql01 = "SELECT count(*) AS T FROM XTDETAMSALL_DETAIL WHERE UPCODE = '$DCODE' AND PRODUCTDWGCODE = '$PRODUCTDWGCODE'" ;
                
                $stmt01 = ociparse($conn,$mysql01);
                
                ociexecute($stmt01);
                ocifetchinto($stmt01,$row01,OCI_ASSOC);
                
                $t2 = $row01["T"];
                //$icon = $t2?"<a href='javascript:expand(\"div$DCODE\");'>+</a>":"-";
                if($t2>0)
                {
                    $icon = "<a href='javascript:expand(\"div$UPCODE\");'>+</a>";
                }else
                {
                    $icon = "-";
                }
                $out = $icon."[".$DCODE."]".$DNAME;
            
                echo "<div id='div".$DCODE."'>".str_repeat("&nbsp;",4*$node_level).$out;
                          if($t2>0)
                {
                    getNode($DCODE,$PRODUCTDWGCODE,$node_level);   
                }
                echo "</div>";
            
            }
        }       
    ?>帮你改了下。试试看。
      

  2.   

    那是数据量太多引起的。用ajax来做吧。先读出有+号的项,当点+号的时候用ajax来读具体的子类。
      

  3.   

    那请问谁那里有ajax相关的实现树结构代码?
    我做一下参考
    谢谢
      

  4.   

    请问 对于大数据量表而言,PHP如果对 该表 进行查询时 他运行的效率会比较差?