2013-02-17 69 views
0

朋友我卡住了,需要你的帮助!与mysqli查询问题

当使用MySQL进行动态菜单我使用查询SELECT * FROM网页,PARENTID = 0和子菜单WHERE PARENTID =“$ PAGEID” ...但是这种做法并不似乎何时工作使用MySqli ..我看到的主要原因之一是查询应该写在函数之外,因为在函数内它简单不工作..不知道为什么。反正这里是我的代码,我希望你的朋友能帮我解决这个问题

function Get_menu() { 
    $menuQuery = $mysql->query("SELECT PageTitle, PageID, ParentID FROM pages WHERE ParentID = 0"); 
    while (($row = $menuQuery->fetch_assoc()) !== null) { 
     echo '<li class="menu-item"><a href="page.php?pageID=' . $row["PageID"] . '">' . $row["PageTitle"] . '</a>'; 
     $PageID = $row["PageID"]; 
     $SubmenuQuery = $mysql->query("SELECT PageTitle, PageID, ParentID FROM pages WHERE ParentID = '$PageID'"); 
     if($SubmenuQuery->num_rows > 0) { 
      echo '<ul class="sub-menu">'; 
      while (($rowx = $SubmenuQuery->fetch_assoc()) !== null) { 
       echo '<li class="menu-item"><a href="page.php?pageID=' . $rowx["PageID"] . '">' . $rowx["PageTitle"] . '</a></li>'; 
      } 
      echo '</ul>'; 
     } 
     echo '</li>'; 
    } 
} 

我已经试过的功能之外编写查询,但是随后因为它假设$ PAGEID为0 为子查询不工作亲爱的朋友,如果你能帮助我,请给我一个大恩惠 谢谢

+0

获取类别1修正了代码格式化,因为它有点难以阅读。 – kufudo 2013-02-17 23:49:59

+1

该代码可以并应该重写为单个JOINed查询。 – 2013-02-17 23:56:07

回答

0

$mysql没有在你的函数范围内定义。你应该把它作为一个参数:

function Get_menu($mysql) 
+0

感谢Mathieu,它也非常丰富 – user1231648 2013-02-17 23:58:16

0

试分析如下:

$query = 
"SELECT PageTitle, PageID, ParentID 
FROM 
    pages subs 
INNER JOIN 
    pages cats 
ON 
    subs.ParentID = cats.PageId 
GROUP BY PageID" ; 

或者您的数据库会被pwn3d并强调,如果你打算用1