我正在为我的博客创建一个关注机制,这是网站的一部分。因此,当user
想要关注其他user
时,他会点击关注按钮,然后在table: follow
中插入他的email_id
和to-be-follow-user's email_id
。现在,当我想在页面上显示所关注用户的博客时,我会从follow table
中提取数据,其中包含我所关注的用户的所有email_id's
,然后我想要使用这些email_id's
从blog table
中提取所有用户(我所遵循的)email_id
的数据。
问题是我无法执行第二部分,从第二个表格中提取数据,我收到了所有我收到的电子邮件,但无法获取他们的博客。
最后我发布了代码。
$query= "select follow_user from follow where my_email='".$_SESSION['email']."'";
$data=mysql_query($query);
if (!$data) { // add this check.
die('Invalid query: ' . mysql_error()) ;
}
while($row=mysql_fetch_array($data)){
echo $row['follow_user'];
echo "<br>";
$query="select * from blog where my_email='".$row['follow_user']."'";
$data=mysql_query($query);
if (!$data) { // add this check.
die('Invalid query: ' . mysql_error()) ;
}
while($row=mysql_fetch_array($data)){
echo $row['subject'];
echo "<br>";
echo $row['my_email'];
echo "<br>";
}
}
答案 0 :(得分:0)
从两个表中获取相关数据的最简单方法是使用JOIN
。
此处有关JOIN
的更多信息:
http://dev.mysql.com/doc/refman/5.0/en/join.html
示例:
SELECT blog.entry
FROM blog
INNER JOIN follow ON blog.email_id = follow.followed_email_id
WHERE follow.email_id = 32
这将为您提供各种follow_email_id撰写的博客中的所有输入字段,其中关注者email_id为32。
内部联接确保您获得匹配的内容,并且只匹配匹配的内容。
更新以上新代码:
您仍然只需要一个查询。如果数据库位于真实的生产环境中,那么在循环中执行大量查询会导致数据库被终止。
您的代码变得更加简单,并且只能因为一次查询无效而失败:
$query= "
SELECT blog.*, follow.follow_user
FROM blog
INNER JOIN follow ON blog.my_email = follow.follow_user
WHERE follow.follow_user = {$_SESSION['email']}
";
$data=mysql_query($query);
if (!$data) { // add this check.
die('Invalid query: ' . mysql_error()) ;
}
while($row=mysql_fetch_array($data)){
echo $row['follow_user'];
echo "<br>";
echo $row['subject'];
echo "<br>";
echo $row['my_email'];
echo "<br>";
}