【问题标题】:How can I pull user info for posts from two tables?如何从两个表中提取帖子的用户信息?
【发布时间】:2014-01-07 05:41:02
【问题描述】:

我有两个表,一个“用户”表和一个“更新”表。我想从表格中获取这些值:

id, username - 来自“用户”表 消息,createdOn - 来自“更新”表

我需要为指定的用户和用户的朋友获取这些值。我已经创建了一个包含所有朋友 ID 的数组,如下所示:

array(1,3,7,21,45);

我需要一个查询来选择与前一个数组匹配的所有更新。 “updates”表还有一个“uid”列,它定义了发布更新的用户。这是我目前所拥有的:

$updates = "SELECT users.id, users.username, updates.message, updates.createdOn FROM users, updates WHERE updates.uid = '". $_COOKIE['id'] ."' ". $friendsNews ." ORDER BY updates.createdOn DESC LIMIT 0, 10";
$updates = mysql_query( $updates );

这对我不起作用,我创建了一个 foreach 循环,该循环还创建了一个 or 语句,该语句插入到查询“$friendsNews”中,如下所示:

foreach( $myFriends as $fid ) {
     $friendsNews .= " OR updates.uid = '". $fid ."'";
}

一旦整个查询编译完成,查询的结果是这样的:

SELECT users.id, users.username, updates.message, updates.createdOn FROM users, updates WHERE updates.uid = '1' OR updates.uid = '2' OR updates.uid = '3' ORDER BY updates.createdOn DESC LIMIT 0, 10

如果有人可以提供帮助,我将不胜感激,但我对 SQL 连接语句不是很有经验。谢谢!

【问题讨论】:

  • $_COOKIE['id'] 持有什么?用户 ID?
  • @Nouphal.M 它只是保存了登录用户的id,一个整数

标签: php mysql sql join


【解决方案1】:

试试

$sql = "SELECT users.id, users.username, updates.message, updates.createdOn, ". 
" updates.message, updates.createdOn ".
" FROM users ".
" INNER JOIN updates ON updates.uid = users.id ".
" WHERE  ".
" updates.uid  IN ( ".implode(', ', $myFriends)." )";

【讨论】:

  • 这对我有用,但我必须将“on”添加到:" INNER JOIN updates ON updates.uid = users.id ".
【解决方案2】:

我认为,如果您想获取 ids 数组中指定的用户的所有更新,最简单的方法是使用 sql JOININ 子句

select users.id, users.username, u1.message, u1.createdOn
from updates as u1
join users as u2 on u2.id = u1.uid
where u1.uid in(1,3,7,21,45)
order by u1.createdOn desc limit 0, 10;

【讨论】:

    【解决方案3】:

    试试这个

    if (in_array($_COOKIE['id'], $myFriends)) {
       $flist = implode(',', $myFriends) 
    }else{
       $flist =  $_COOKIE['id'].','.implode(',', $myFriends);   //if $_COOKIE['id'] is differed.....
    }
    
    $sql = "SELECT users.id, users.username, updates.message, updates.createdOn,          
              updates.message, updates.createdOn FROM users INNER JOIN updates
                  updates.uid = users.id WHERE updates.uid  IN ( ".$flist." )";
    

    登录用户的帮助不同.....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 2022-01-21
      • 2019-07-17
      • 1970-01-01
      相关资源
      最近更新 更多