根据数据库内容生成产品列表

时间:2012-08-22 20:19:04

标签: php mysql list nested-loops

我创建了一个数据库,其中包含每个产品系列的一个表,基本上我正在尝试列出所有不同的模型(每个表中的表行),在第一行是table_name的列表中。为什么这不起作用?

    $result = mysql_query("SELECT DISTINCT TABLE_NAME FROM 
                           INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME 
                           IN ('id') AND TABLE_SCHEMA='products-ropox'");
    while($row = mysql_fetch_array($result))
    {
        $serie = $row["TABLE_NAME"];
        echo "<ul>";
        echo "<li class='ldd_heading'><a class='link'
              href='products.php?category=".$serie."'>"
              .ucfirst($serie)."</a></li>";
        $query = mysql_query("SELECT DISTINCT model FROM $serie 
                              ORDER by model ASC");
        while($row = mysql_fetch_array($query))
        {
            echo "<li><a href='products.php?category=".$serie.
            "&model=".$row['model']."'>".$row['model']."</a></li>";
        }
        echo "</ul>";
    }

第一个循环运行良好,但第二个查询生成错误...

1 个答案:

答案 0 :(得分:1)

重命名第二个$row,您需要mysql_fetch_assoc而不是mysql_fetch_array。如果您想使用mysql_fetch_array,则需要使用$row[0]

$result = mysql_query("SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('id') AND TABLE_SCHEMA='products-ropox'");
while($row = mysql_fetch_array($result))
{
    $serie = $row["TABLE_NAME"];
    echo "<ul>";
        echo "<li class='ldd_heading'><a class='link' href='products.php?category=".$serie."'>".ucfirst($serie)."</a></li>";
            $query = mysql_query("SELECT DISTINCT model FROM $serie ORDER by model ASC");
            while($row2 = mysql_fetch_array($query))
            {
                echo "<li><a href='products.php?category=".$serie."&model=".$row2['model']."'>".$row2['model']."</a></li>";
            }
    echo "</ul>";
}

另一个好的方法是在查询后粘贴or die(mysql_error()),如果查询中有错误,则输出错误。