来自两个不同行的mysql_fetch_array

时间:2011-11-22 20:02:25

标签: php mysql

我很难解释这个问题,但无论如何我都会尝试。

我有两个不同的数据库行

  SOMETHING
*---------------------------------------------------------*
|    id    |    category_id    |    body                  |
*---------------------------------------------------------*

  CATEGORY
*---------------------------------------------------------*
|    id    |    title    |    description                 |
*---------------------------------------------------------*

现在,我想在samt时从两行中提取数据,我该怎么做?

我需要从SOMETHING中提取值,并在SOMETHING中显示category_id中CATEGORY的信息 - 这是如何做到最好的方法?

我用它来提取这样的值:

$query = mysql_query("select * from SOMETHING WHERE id='$id' LIMIT 1");

while ($row = mysql_fetch_array($query)) {
   extract($row);

}

4 个答案:

答案 0 :(得分:2)

使用联接

SELECT
    S.id,
    S.category_id,
    S.body,
    C.title,
    C.description
FROM SOMETHING AS S
JOIN CATEGORY AS C
ON S.category_id = C.id
WHERE id = '42'
LIMIT 1

如果CATEGORY表中可能没有匹配的行,则可以改为使用LEFT JOIN。

答案 1 :(得分:0)

听起来你应该把两张桌子连在一起:

SELECT * FROM SOMETHING, CATEGORY WHERE SOMETHING.category_id=CATEGORY.id AND 
SOMETHING.id='$id' LIMIT 1

确保您清理进入数据库的$ id!

答案 2 :(得分:0)

$query = mysql_query("SELECT * FROM SOMETHING INNER JOIN CATEGORY ON CATEGORY.id = SOMETHING.category_id WHERE id='$id' LIMIT 1");

但这很容易受到SQL注入的影响。

答案 3 :(得分:0)

你肯定想要一个“加入”。这是另一个例子:

select a.id ID, b.title TITLE, b.description DESCRIPTION, a.body TEXT
from something a 
inner join category b on a.id = b.id;