我有两个表users和msgs:
users包含id、name、email、password
msgs包含id、sender、receiver、link
我想选择receiver等于用户的相同id的所有行,如何循环才能获得所有行?
我试着做一些事,但不要紧
$name_query = mysql_query("SELECT fullname,id FROM users WHERE email = '$email'");
$name = mysql_fetch_object($name_query);
$user_id = $name->id;
$result = mysql_query("SELECT receiver FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID: %s Name: %s", $row[0], $row[1]);
}
mysql_free_result($result);
?>发布于 2013-02-03 20:31:52
试试这个::
Select
u.fullname,u.id
from
`users` u
INNER JOIN msgs m ON (u.id=m.receiver)
WHERE email = '$email'发布于 2013-02-03 20:32:45
您应该只检索所需的行,而不是所有行(如果数据库中有1.000.000条消息怎么办?)
这可以通过使用"JOIN“的一个查询来完成:http://dev.mysql.com/doc/refman/5.0/en/join.html
发布于 2013-02-03 20:34:44
使用join子句
SELECT m.*, u.email, u.name FROM `users` AS u
JOIN `msgs` AS m ON m.receiver = u.id
WHERE u.email = '$email'这为您提供了例如
| id | sender | receiver | link | email | name |
+----+--------+----------+----------+------------------+-----------------+
| 1 | 1 | 2 | adfd | receiver's email | receiver's name |您可以将结果提取到关联数组并使用命名索引,如下所示:
$row['link']
$row['name']或者普通的索引数组(正确的索引可以通过打印整个数组来找到)
print_r($row)
$row[3] // should be link
$row[5] // should be namehttps://stackoverflow.com/questions/14672480
复制相似问题