php - 我在php上的用户定义的navigation()无法正常工作,我无法在代码中找到错误

标签 php mysql navigation content-management-system

我在php上的用户定义的navigation()无法正常工作,我无法在代码中找到错误,有人可以帮忙吗?

我只想知道为什么数据库查询一直失败?

    function navigation($category_array ,$tutorial_array, $topic_array)
{
    $output = "<ul id=\"HOR\" class=\"categories\">";
    $category_set = find_all_categories(false); 
        while ($category = mysqli_fetch_assoc($category_set))
        {
            $output .=  "<li";
            if ($category_array && $category["id"] == $category_array["id"])
            {
                $output .=   " class=\"selected\"";
            }
            $output .= ">";
            $output .= "<a href=\"manage_content.php?category="; 
            $output .=  urlencode($category["id"]); 
            $output .= "\">";
            $output .=  htmlentities($category["category_name"]); 
            $output .= "</a>";

            $tutorial_set = find_tutorials_for_category($category["id"], false);
            $output .= "<ul id=\"sub1\" class=\"tutorials\">";
                while ($tutorial = mysqli_fetch_assoc($tutorial_set))
                {
                    $output .=  "<li";
                    if ($tutorial_array && $tutorial["id"] == $tutorial_array["id"])
                    {
                        $output .= " class=\"selected\"";
                    }
                    $output .=  ">";
                    $output .= "<a href=\"manage_content.php?tutorial=";
                    $output .=  urlencode($tutorial["id"]);
                    $output .= "\">";
                    $output .=  htmlentities($tutorial["name"]); 
                    $output .= "</a>";

                    $topic_set = find_topics_for_tutorial($topic["id"], false);
                    $output .= "<ul id=\"sub1\" class=\"topics\">";
                        while ($topic = mysqli_fetch_assoc($topic_set))
                        {
                            $output .=  "<li";
                            if ($topic_array && $topic["id"] == $topic_array["id"])
                            {
                                $output .= " class=\"selected\"";
                            }
                            $output .=  ">";
                            $output .= "<a href=\"manage_content.php?topic=";
                            $output .=  urlencode($topic["id"]);
                            $output .= "\">";
                            $output .=  htmlentities($topic["name"]); 
                            $output .= "</a></li>";
                        }
                    mysqli_free_result($topic_set);
                    $output .= "</ul></li>";
                }
            mysqli_free_result($tutorial_set);
            $output .= "</ul></li>";
        }
    mysqli_free_result($category_set);
    $output .= "</ul>";
    return $output;
}

function public_navigation($category_array ,$tutorial_array, $topic_array)
{
    $output = "<ul id=\"HOR\" class=\"categories\">";
    $category_set = find_all_categories(); 
    while ($category = mysqli_fetch_assoc($category_set))
    {
        $output .=  "<li";
        if ($category_array && $category["id"] == $category_array["id"])
        {
            $output .=   " class=\"selected\"";
        }
        $output .= ">";
        $output .= "<a href=\"index.php?category="; 
        $output .=  urlencode($category["id"]); 
        $output .= "\">";
        $output .=  htmlentities($category["category_name"]); 
        $output .= "</a>";
        if ($category_array["id"] == $category["id"] || $tutorial_array["category_id"] == $category["id"])
        {
            $tutorial_set = find_tutorials_for_category($category["id"]);
            $output .= "<ul id=\"sub1\" class=\"tutorials\">";
            while ($tutorial = mysqli_fetch_assoc($tutorial_set))
            {
                $output .=  "<li";
                if ($tutorial_array && $tutorial["id"] == $tutorial_array["id"])
                {
                    $output .= " class=\"selected\"";
                }
                $output .=  ">";
                $output .= "<a href=\"index.php?tutorial=";
                $output .=  urlencode($tutorial["id"]);
                $output .= "\">";
                $output .=  htmlentities($tutorial["name"]); 
                $output .= "</a>";
                if ($tutorial_array["id"] == $tutorial["id"] || $topic_array["category_id"] == $tutorial["id"])
                {
                    $topic_set = find_topics_for_tutorial($tutorial["id"]);
                    $output .= "<ul id=\"sub1\" class=\"topics\">";
                    while ($topic = mysqli_fetch_assoc($topic_set))
                    {
                        $output .=  "<li";
                        if ($topic_array && $topic["id"] == $topic_array["id"])
                        {
                          $output .= " class=\"selected\"";
                        }
                        $output .=  ">";
                        $output .= "<a href=\"index.php?topic=";
                        $output .=  urlencode($topic["id"]);
                        $output .= "\">";
                        $output .=  htmlentities($topic["name"]); 
                        $output .= "</a></li>";     // end of the topic li
                    }
                    mysqli_free_result($tutorial_set);
                    $output .= "</ul></li>";  // end of the tutorial li
                }
                $output .= "</ul>";
                mysqli_free_result($tutorial_set);
            }
        }
    $output .= "</li>"; // end of the category li
    }
    mysqli_free_result($category_set);
    $output .= "</ul>";
    return $output;
}


我为MySQL查询设计的一些功能也是我自己的,如下所示:

    function confirm_query($result_set)
    {
        if (!$result_set)
        {
            die("Database query failed." . mysqli_connect_error() . " (" . mysqli_connect_errno() . " )");


// die(“数据库查询失败。”);
            }

    }

    function find_all_categories($public=true)
    {
        global $connection;

        $query  = "SELECT * ";
        $query .= "FROM tut_category ";
        if ($public)
        {
        $query .= "WHERE visible = 1 ";
        }
        $query .= "ORDER BY position ASC";
        $category_set = mysqli_query($connection, $query);
        echo $category_query;
        confirm_query($category_set);
        return $category_set;
    }

function find_tutorials_for_category($category_id, $public=true)
    {
        global $connection;

        $safe_category_id = mysqli_real_escape_string($connection, $category_id);

        $query  = "SELECT * ";
        $query .= "FROM tut_name ";
        $query .= "WHERE category_id = {$safe_category_id} ";
        if ($public)
        {
            $query .= "AND visible = 1 ";
        }
        $query .= "ORDER BY position ASC";
        $tutorial_set = mysqli_query($connection, $query);

        confirm_query($tutorial_set);
        return $tutorial_set;

    }

function find_topics_for_tutorial($tutorial_id, $public=true)
    {
        global $connection;

        $safe_tutorial_id = mysqli_real_escape_string($connection, $tutorial_id);

        $query  = "SELECT * ";
        $query .= "FROM tut_topic ";
        $query .= "WHERE tutorial_id = {$safe_tutorial_id} ";
        if ($public)
        {
            $query .= "AND visible = 1 ";
        }
        $query .= "ORDER BY position ASC";
        $topic_set = mysqli_query($connection, $query);

        confirm_query($topic_set);
        return $topic_set;

    }


如果您需要有关此php脚本的更多信息,我一定会在注释中提供它们。我只想知道为什么数据库查询一直失败?

最佳答案

乍一看,我想说您可能需要用引号,因为id可能是字符串:

$query .= "WHERE tutorial_id = {$safe_tutorial_id} ";


至:

$query .= "WHERE tutorial_id = '". $safe_tutorial_id ."'";


尽管可以肯定地说,您可能想在Confirm_query方法中使用mysqli_error()而不是mysqli_conn_error()。该连接可能很好,但可能会产生查询,因此运行该连接可能会给您带来更好的错误消息。

关于php - 我在php上的用户定义的navigation()无法正常工作,我无法在代码中找到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31904158/

相关文章:

javascript - 我的 fadeToggle() 以我不希望它出现的元素为目标

css - flexbox css 居中和布局不能水平工作

php - 加入 GROUP_CONCAT 只返回 1 行

php - 为每个系列创建一个下拉菜单

php - Laradock:如何启用/安装 php7 ldap 支持扩展?

MySQL 工作台 : "Can' t connect to MySQL server on 127. 0.0。 1' (10061)"错误

mysql - 在hibernate中添加自表外键

php - php 类型比较背后的基本原理

Mysql 5.7.21 only_full_group_by 行为与 EF6 和 Mysql Connector 6.9.9 不一致

Swift 4 推送 viewController 而不是 Present