我在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/