我是PHP和mySQL的初学者。我正在通过我的数据库创建导航。我有两个表设置一个是主要导航项,一个是子导航项。它们由subject_id
连接。我正在使用循环来显示它们。显示第一个表,第二个表为信息所在的位置留出空间,但不会显示。我认为它必须是SQL设置中的东西,但我不知道。这是我的代码(我知道数据库是连接的):
<?php require_once("includes/connection.php") ?>
<?php require_once("includes/functions.php") ?>
<?php include("includes/headder.php") ?>
<table id="structure">
<tr>
<td id="navigation">
<ul class="subjects">
<?php
$subject_set = mysql_query("SELECT * FROM subjects", $connection);
if(!$subject_set){
die("database query failed: " . mysql_error());
}
while ($subject = mysql_fetch_array($subject_set)) {
echo "<li>" . $subject["menu_name"] . "</li>";
$page_set = mysql_query("SELECT * FROM pages WHERE subject_id = {$subject["id"]}", $connection);
if(!$page_set){
die("database query failed: " . mysql_error());
}
echo "<ul class=\"pages\">";
while ($page = mysql_fetch_array($page_set)) {
echo "<li>" . $page["menu_name"] . "</li>";
}
echo "</ul>";
}
?>
</ul>
</td>
<td id="page">
<h2>Content Area</h2>
</td>
</tr>
</table>
<?php include("includes/footer.php") ?>
答案 0 :(得分:0)
由于您提到空白区域显示数据应该在哪里,因此看起来确实找到了行。因此,您的select语句应该没问题。这很可能意味着在$ page记录中找不到索引“menu_name”。
检查以确保“menu_name”确实是pages表的一列。
要测试$ page记录有哪些有效列,您可以在while $ page循环中使用以下内容:
var_dump($page);
如果主题id是一个整数,则在where子句中不需要单引号。但是,如果subject_id包含任何非整数字符,则select语句必须为:
$page_set = mysql_query("SELECT * FROM pages WHERE subject_id = '{$subject["id"]}'", $connection);