我无法在我的分类广告网站上正常工作,但基本上我正在做的是从Item表LIMIT 40中取出并在页面上显示它。现在,对于困难的部分,我将从类别表中获取所有内容,其中包含类别的名称(每个类别名称都有一个相对ID)。我需要打印出类别名称WHEN,其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循环似乎是解决这个问题的最好方法(我尝试了很多方法),我得到的错误是“有一个意外的'}'”。
答案 0 :(得分: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。