【问题标题】:PHP and MySQL: Dynamic Multi-level MenuPHP 和 MySQL:动态多级菜单
【发布时间】:2012-12-17 05:54:12
【问题描述】:

我在 Google 上搜索并找到了一些对我有用的东西 (http://wizardinternetsolutions.com/web-database-design/dynamic-multilevel-css-menu-php-mysql/)。一旦我开始工作,我计划对其进行一些修改并根据我的需要进行调整。 -Ej。我想将label 用作Primary Key 而不是随机数。

但是,我收到一个错误:警告:mysql_fetch_assoc() 期望参数 1 是资源,在 /home/content/81/10038181/html/_html/menu/menu-generator.php 中给出的布尔值第 23 行

有趣的是,当我运行查询时,它运行良好。

这是表结构(SQL):

CREATE TABLE `menu` (
  `id` int(11) NOT NULL auto_increment,
  `label` varchar(50) NOT NULL default '',
  `link` varchar(100) NOT NULL default '#',
  `parent` int(11) NOT NULL default '0',
  `sort` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=248 DEFAULT CHARSET=latin1;

PHP:

$dbc = new mysqli("localhost", "username", "password", "temp_database");
$dbn = "temp_database";
    function display_children($parent, $level) {
        $sql = "SELECT a.id, a.label, a.link, Deriv1.Count FROM `$dbn`.`menu` a  LEFT OUTER JOIN (SELECT `parent`, COUNT(`parent`) AS Count FROM `".$dbn."`.`menu` GROUP BY parent) Deriv1 ON a.id = Deriv1.parent WHERE a.parent=" . $parent . " ORDER BY `sort`";
        //echo $sql;  //For testing purposes
        $result = $dbc->query($sql);
        echo "<ul>\n";

        while ($row = $result->fetch_assoc() ) {
            if ($row['Count'] > 0) {
                echo "<li><a href='" . $row['link'] . "'>" . $row['label'] . "</a>";
                display_children($row['id'], $level + 1);
                echo "</li>";
                }
            elseif ($row['Count']==0) {
                echo "<li><a href='" . $row['link'] . "'>" . $row['label'] . "</a></li>";
                } 
            else;
        }
        echo "</ul>";
    }
    display_children(0, 1);

【问题讨论】:

  • 有趣的是我什至不知道哪一行是第 23 行 :)
  • 您的 mysql_query 失败,因此在 $result 变量中返回布尔值 false。
  • 可能意味着$result 是假的。在mysql_query 后面加一个var_dump($result) 来查看查询是否正确执行。
  • @Osiris 是的,$result = bool(false)
  • @Osiris 但是,当我在 myphpadmin 中运行相同的查询时,它运行正常

标签: php mysql drop-down-menu menu dynamic-data


【解决方案1】:

我点击了链接 - 根本没有连接到数据库的代码。查看另一个包含mysql_connect 的 PHP-MySql 教程。

此外,这只是一个快速修复 - mysql_ 扩展已被弃用。请改用 mysqli。检查 php.net 上的文档

【讨论】:

  • 我故意没有包含有关数据库连接的任何信息。另外,我注意到它需要mysql_select_db(); 一旦我添加了这一行,它就会运行代码。现在,既然你指出了,我将不得不修改它以使用mysqli
  • 我也想修改这段代码,这样我就可以用label作为主键,完全去掉ID
猜你喜欢
  • 1970-01-01
  • 2020-08-26
  • 2014-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 2012-01-20
  • 1970-01-01
相关资源
最近更新 更多