2013-02-17 113 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