0

我无法让它在我的分类广告网站上正常工作,但基本上我正在做的是从 Item 表 LIMIT 40 中获取所有内容并将其显示在页面上。现在对于困难的部分,我从一个类别表中获取所有内容,其中包含类别的名称(每个类别名称都有一个相对 id)。当它的 id 等于项目的 id 时,我需要打印出类别的名称。希望代码将有助于澄清:

$sql = mysql_query("SELECT * FROM table_item ORDER BY creationtime DESC LIMIT 40");
$sql2 = mysql_query("SELECT * FROM table_category");
$ad_count = mysql_num_rows($sql);
$row2 = mysql_fetch_array($sql2);

if($ad_count > 0){
  while($row = mysql_fetch_array($sql)){
    $item_categoryId = $row["cid"];
    $categoryId = $row2["id"];
    $categoryName = $row2["name"];
    while($item_categoryId == $categoryId){
      $catName = $categoryName;
    }
    echo $catName;
  }
}

现在,代码比我提出的要多一点,我尽量保持简短和甜蜜。与其呼应类别名称,不如将其实际放入 HTML 表格行中,并且还放入了更多信息。当我不对类别名称做任何事情时,一切正常,但是当我尝试构建一些东西来访问和比较它时,一切都变得糟糕了。

另外,我应该提到这个嵌套的while循环似乎是解决这个问题的最好方法(我尝试了很多方法),我得到的错误是“有一个意想不到的'}'”。

4

1 回答 1

1

使用连接而不是嵌套循环:

SELECT
    *
FROM
    table_item,
INNER JOIN
    table_category
ON
    table_item.cid=table_category.id
ORDER BY
    creationtime DESC
LIMIT 40

如果不是每个项目都有对应的类别,请使用 LEFT JOIN 而不是 INNER JOIN。

于 2013-09-20T05:19:16.257 回答