2012-08-22 31 views
0

我创建了一个数据库,其中包含每个产品系列的一个表,基本上我试图列出所有不同的模型(每个表中的表行)第一行是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>"; 
    } 

第一循环的效果很好,但第二个查询产生一个错误......

+0

它怎么样? –

+0

第二个查询......它说警告:mysql_fetch_array()期望参数1是资源。 – TehHO

+0

在第二个循环中覆盖'$ row'。 –

回答

1

重命名第二$row,你需要mysql_fetch_assocmysql_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())输出一个错误,如果有一个在您的查询。

+0

之前工作了一点点,但仍然给我一个错误......这真的让我烦恼! – TehHO

+0

更新了我的答案 – locrizak

+0

还没有任何改变。我重新复制代码,并改变“mysql_fetch_array”到“mysql_fetch_assoc” mysql_fetch_assoc()预计参数1是资源 的有趣的事情,如果我键入查询到的phpmyadmin的SQL语句组成部分,它的工作原理就像一个魅力... – TehHO