我有一个非常简单的查询,但我需要在其中进行另一个查询。我对SQL和PHP知之甚少,所以我想请你帮忙。
$result = mysql_query("SELECT * FROM img");
while ($row = mysql_fetch_assoc($result))
{
$imgName = $row['name'];
$catID = $row['catid'];
// Problem
// Need to get category NAME from category ID
$result2 = mysql_query("SELECT name FROM cat WHERE id = $catID");
while ($row2 = mysql_fetch_assoc($result2))
{
$catName = $row2['name'];
}
echo "Image: $imgName <br />";
echo "Category: $catName";
}
答案 0 :(得分:4)
这看起来很简单JOIN
来获取类别名称。您可以使用单个查询:
SELECT
img.id AS imgId,
img.name AS imgName,
cat.name AS catName
FROM img JOIN cat ON img.catid = cat.id
用上面的代码替换你的初始查询,它将消除对内部查询的需要。
答案 1 :(得分:0)
这应该有效。您将看到每行中每个表的所有img属性以及cat.name值。
SELECT *, cat.name as catname FROM img
INNER JOIN cat
ON cat.id = img.catid
答案 2 :(得分:0)
你可以在这个上做一个简单的子查询:
$result = mysql_query("
SELECT name, catid, (SELECT name FROM cat WHERE id = img.catid) AS cat_name
FROM img
");