0

友達私は立ち往生していて、あなたの助けが必要です!

MySqlを使用して動的メニューを作成する場合は、クエリSELECT * FROM pages WHERE 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であると想定しているため、サブメニューのクエリが機能しません。

4

2 に答える 2

0

$mysql関数スコープ内で定義されていません。パラメータとして渡す必要があります。

function Get_menu($mysql)
于 2013-02-17T23:46:09.710 に答える
0

これを分析してみてください:

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

または、カテゴリを 1 つずつ取得しようとすると、データベースが pwn3d になり、負荷がかかります。

于 2013-02-18T00:01:12.343 に答える