我想从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]
答案 0 :(得分:0)
在线11
您有$row['count']
,这意味着您正在检索数据库列中没有的列count
(根据您的附加图片),我想您想要这个
if(mysql_num_rows($query)>0){
//do stuff here
}
elseif(mysql_num_rows($query)>==0){
//do stuff here
}
答案 1 :(得分: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注入攻击。 如果你不介意的话,请考虑一下。
答案 2 :(得分:0)
您使用了错误的语法。 FROM 'menu'
应该使用反引号而不是单引号:
FROM `menu`
答案 3 :(得分: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);
答案 4 :(得分: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;