Php 当循环-数据库查询失败时:

Php 当循环-数据库查询失败时:,php,mysql,Php,Mysql,我的前两个while循环现在正在工作,但当我为以下级别添加3个while循环时,我会遇到另一个错误: 数据库查询失败:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法 第1级-工程 $parentpage_set = mysql_query("SELECT * FROM parentpages", $connection); if (!$parentpage_set) {die("Database query failed: "

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

数据库查询失败:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法

第1级-工程

    $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>";
$parentpage\u set=mysql\u查询(“从parentpage选择*,$connection”);
如果(!$parentpage_set){die(“数据库查询失败:”.mysql_error());}
echo“
    ”; 而($parentpage=mysql_fetch_数组($parentpage_set)){echo“
  • {$parentpage[“menu_name”]}
  • ”; 回声“
”;
第2级-工程

    $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>";
$childpage\u set=mysql\u查询(“从parentpage\u id={$parentpage[“id”]},$connection所在的子页面中选择*);
如果(!$childpage_set){die(“数据库查询失败:”.mysql_error());}
echo“
    ”; 而($childpage=mysql_fetch_数组($childpage_set)){echo“
  • {$childpage[“menu_name”]}
  • ”;} 回声“
”;
级别3-如果我对此进行注释,则查询将运行,但如果未注释,则会收到一个错误

    $subchildpage1_set = mysql_query("SELECT * FROM subchildpages1 WHERE childpage_id = {$childpage["id"]}",$connection);
    if (!$subchildpage1_set) {die("Database query failed: " . mysql_error()); }
    echo "<ul class=\pages\">";
    while ($subchildpage1 = mysql_fetch_array($subchildpage1_set)) {echo "<li>{$subchildpage1["menu_name"]}</li>"; }
    echo "</ul>";
$subchildpage1\u set=mysql\u查询(“从subchildpage1中选择*,其中childpage\u id={$childpage[“id”]},$connection”);
if(!$subchildpage1_set){die(“数据库查询失败:”.mysql_error());}

echo“这里需要的是调试

对于这类问题,用PHP进行调试非常容易

您的查询中出现语法错误。查看查询,我猜有两种错误选项。第一种是查询中的一些关键字拼写错误。第二种是$childpage[“id”]的值为空。在这种情况下,生成查询将导致:

"SELECT * FROM subchildpages1 WHERE childpage_id ="
而不是

"SELECT * FROM subchildpages1 WHERE childpage_id = 1"
比如说

因此,您可以在这里将查询分配到一个变量中并打印它。考虑到两种可能出现错误的假设,还可以打印$childpage[“id”]变量

调试变量时,始终使用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[“id”]为NULL或空字符串-“”,则应检查原因。

此处需要的是调试

对于这类问题,用PHP进行调试非常容易

您的查询中出现语法错误。查看查询,我猜有两种错误选项。第一种是查询中的一些关键字拼写错误。第二种是$childpage[“id”]的值为空。在这种情况下,生成查询将导致:

"SELECT * FROM subchildpages1 WHERE childpage_id ="
而不是

"SELECT * FROM subchildpages1 WHERE childpage_id = 1"
比如说

因此,您可以在这里将查询分配到一个变量中并打印它。考虑到两种可能出现错误的假设,还可以打印$childpage[“id”]变量

调试变量时,始终使用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[“id”]为NULL或空字符串—"请在PHP 7中删除它。了解有关PDO的语句,并考虑使用PDO。如果你回响了查询,你会看到什么?这是在查询中查找语法错误时应该做的第一件事。做一个巨大的帮助并做一些基本的分离。至少,在页面顶部执行数据库查询,将结果保存到所需的结构中(某种形式的数组),然后迭代html中的数组。将复杂的php与html混合始终是一个坏主意-仅仅尝试阅读上面的代码就让我头疼-难怪您在苦苦挣扎感谢您的帮助,我的第一个父页菜单名出现1。范围和错误数据库查询失败:您的SQL语法有错误;请检查手册这与您的MySQL服务器版本相对应,以便在第1行的“”附近使用正确的语法,这就是echo返回的全部内容,我对编程单词非常陌生,这是我第一次在第一级以上编码tryprint$连接,在第二级之后编码tryprint$连接。MySQL有可能关闭连接请在PHP 7中删除。了解使用PDO的语句,并考虑使用PDO。如果你回响了查询,你会看到什么?这是在查询中查找语法错误时应该做的第一件事。做一个大的帮助并做一些基本的分离。至少,在T上执行数据库查询。操作页面,将结果保存到所需的结构中(某种形式的数组),然后迭代html中的数组。将复杂的php与html混合始终是一个坏主意-仅仅尝试阅读上面的代码就让我头疼-难怪您在苦苦挣扎感谢您的帮助,我的第一个父页菜单名出现1。范围和错误数据库查询失败:您的SQL语法有错误;请检查手册这与您的MySQL服务器版本相对应,以便在第1行的“”附近使用正确的语法,这就是echo返回的全部内容,我对编程单词非常陌生,这是我第一次在第一级以上编码tryprint$连接,在第二级之后编码tryprint$连接。MySQL有可能关闭连接n、 我已经添加了上面的代码,我得到了这个字符串(50)“SELECT*FROM subchildpages1其中childpage_id=“NULL这是我的表结构1,id,int(11),No,None,AUTO_INCREMENT:2,childpage_id,int(11),No,None:3,menu_name,varchar(70),latin1_-swedish__-ci,No,None:4,position,int(3),No,None:5,visible,tinyint,(1),否,无:6,内容,文本,拉丁语,瑞典语,否,无:我的表格内容不是空的以太id,childpage id,菜单名,位置,可见,内容:1,1,4.1.1审查和索引,1,1,0:2,1,4.1.2指南和标准,2,1,0:表格不是空的,我不确定php为什么会收到空值-我甚至删除了这两个表格e并重新创建了它们,没有变化,我已经通过命令pr登录到mysql