1

我想显示来自 mysql 数据库的菜单。这是我到目前为止尝试过的,不知道错误是什么。我感谢任何帮助。我发布了我想要显示的表格和我得到的错误

警告:mysql_fetch_assoc() 期望参数 1 是资源,布尔值在第 18 行的 C:\wamp\www\second _try\eCRA.php 中给出

<?php
    function display_menu($parent, $level) {
        $query=mysql_query("SELECT n.id, n.menu_name, n.link, d.count FROM 'menu' n 
        LEFT OUTER  JOIN(SELECT parent, COUNT (*) AS count FROM 'menu' GROUP BY
        parent) d ON  n.id=d.parent  W HERE n.parent=".$parent);
        echo"<ul>";

        while($row = mysql_fetch_assoc($query)) {
            if($row['count']>0) {
                echo"<li><a href='" .$row['link']. "'>". $row['menu_name'] ."</a>";
                display_menu($row['id'], $level + 1);
                echo"</li>";
            }//f
            elseif($row['count']==0) { 
                echo"<li><a href='". $row['link'] ."'>". $row['menu_name'] ."</a></li>";
            }else; 
        }//w
        echo"</ul>";
    }

    display_menu(0,2);
?>

![error][1] ![Table][2]

4

5 回答 5

0

在线11您有$row['count']这意味着您正在检索count不在数据库列中的列(根据您附加的图像),我认为您想要这个。

if(mysql_num_rows($query)>0){
//do stuff here 
}
elseif(mysql_num_rows($query)>==0){
//do stuff here 
}
于 2013-09-08T12:44:11.950 回答
0

出了什么问题:

$query=mysql_query("SELECT n.id, n.menu_name, n.link, d.count FROM 'menu' n 
    LEFT OUTER  JOIN(SELECT parent, COUNT (*) AS count FROM 'menu' GROUP BY
    parent) d ON  n.id=d.parent  W HERE n.parent=".$parent);

您正在使用单引号来引用表名。你不能这样做。你需要为此使用反引号

像这样:

$query=mysql_query("SELECT n.id, n.menu_name, n.link, d.count FROM `menu` n 
    LEFT OUTER JOIN (SELECT parent, COUNT (*) AS count FROM `menu` GROUP BY
    parent) d ON  n.id=d.parent  W HERE n.parent=".$parent);

我还想指出,您的代码可能容易受到 SQL 注入的影响。如果你不介意的话,看看那个。

于 2013-09-08T12:48:02.643 回答
0

您使用了错误的语法。FROM 'menu'应该用反引号而不是单引号:

  FROM `menu` 
于 2013-09-08T12:48:36.297 回答
0

mysql_query 无法得到结果 使用mysql_error() 查找问题

 function display_menu($parent, $level) {
    $query=mysql_query("SELECT n.id, n.menu_name, n.link, d.count FROM 'menu' n 
    LEFT OUTER  JOIN(SELECT parent, COUNT (*) AS count FROM 'menu' GROUP BY
    parent) d ON  n.id=d.parent  W HERE n.parent=".$parent) or die(mysql_error());
    echo"<ul>";

    while($row = mysql_fetch_assoc($query)) {
        if($row['count']>0) {
            echo"<li><a href='" .$row['link']. "'>". $row['menu_name'] ."</a>";
            display_menu($row['id'], $level + 1);
            echo"</li>";
        }//f
        elseif($row['count']==0) { 
            echo"<li><a href='". $row['link'] ."'>". $row['menu_name'] ."</a></li>";
        }else; 
    }//w
    echo"</ul>";
}

display_menu(0,2);
于 2013-09-08T12:51:11.127 回答
0

假设父母是数字,试试这个......

SELECT n.id
     , n.menu_name
     , n.link
     , d.count 
  FROM menu n 
  LEFT 
  JOIN 
     ( SELECT parent 
            , COUNT (*) count 
         FROM menu
        GROUP 
           BY parent
     ) d 
    ON n.id = d.parent 
 WHERE n.parent = $parent;
于 2013-09-08T13:04:08.480 回答