我很难解释这个问题,但无论如何我都会尝试。
我有两个不同的数据库行
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);
}
答案 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;