while循环 - 数据库查询失败:

时间:2016-01-14 13:09:36

标签: php mysql

我的前两个while循环现在正在工作但是当我为下一个级别添加3个时我得到另一个错误:

  

数据库查询失败:您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以获得在''附近使用的正确语法。在第1行

1级 - 工作

-1

第2级 - 作品

    $parentpage_set = mysql_query("SELECT * FROM parentpages", $connection);
    if (!$parentpage_set) {die("Database query failed: " . mysql_error()); }
    echo "<ul class=\"subjects\">";
    while ($parentpage = mysql_fetch_array($parentpage_set)) {echo "<li>{$parentpage["menu_name"]}</li>";
    echo "</ul>";

等级3 - 如果我对我的查询运行发表评论但是在未评论时我收到错误

    $childpage_set = mysql_query("SELECT * FROM childpages WHERE parentpage_id = {$parentpage["id"]}",$connection);
    if (!$childpage_set) {die("Database query failed: " . mysql_error()); }
    echo "<ul class=\"pages\">";
    while ($childpage = mysql_fetch_array($childpage_set)) {echo "<li>{$childpage["menu_name"]}</li>"; }
    echo "</ul>";

我仍然需要在我的导航中添加两个级别 - 我无法接受我的错误而且我一直在尝试接收它并且我已经阅读了很多问题,有人可以告诉我我的错误在哪里好的

1 个答案:

答案 0 :(得分:0)

这里需要的是调试。

使用PHP进行调试可以很容易地解决这类问题。

您的查询中出现语法错误。查看查询,我猜可以有两个错误选项。第一个是错误拼写查询中的一些关键词。第二个是$ childpage [&#34; id&#34;]有一个空值。在这种情况下,构建查询将导致:

"SELECT * FROM subchildpages1 WHERE childpage_id ="

而不是

"SELECT * FROM subchildpages1 WHERE childpage_id = 1"

例如。

所以你可以在这里做的是在一个变量中分配查询并打印它。考虑到两种错误可能性的假设,也会打印$ childpage [&#34; id&#34;]变量。

调试变量时总是使用var_dump()或print_r()。

示例:

$sql = "SELECT * FROM subchildpages1 WHERE childpage_id = {$childpage["id"]}";

var_dump($sql, $childpage["id"]);
die();

$subchildpage1_set = mysql_query($sql, $connection);

如果$ childpage [&#34; id&#34;]为NULL或空字符串 - &#34;&#34;,那么您应该检查原因。