Php 如何从两个表中提取帖子的用户信息?
我有两个表,“用户”和“更新”表。我想从表中获取这些值: id、用户名-来自“用户”表 消息,createdOn-来自“更新”表 我需要为指定的用户和用户的朋友获取这些值。我已经创建了一个包含所有好友id的数组,如下所示:Php 如何从两个表中提取帖子的用户信息?,php,mysql,sql,join,Php,Mysql,Sql,Join,我有两个表,“用户”和“更新”表。我想从表中获取这些值: id、用户名-来自“用户”表 消息,createdOn-来自“更新”表 我需要为指定的用户和用户的朋友获取这些值。我已经创建了一个包含所有好友id的数组,如下所示: array(1,3,7,21,45); foreach( $myFriends as $fid ) { $friendsNews .= " OR updates.uid = '". $fid ."'"; } 我需要一个查询,将选择所有的更新与匹配的前一个数组。“
array(1,3,7,21,45);
foreach( $myFriends as $fid ) {
$friendsNews .= " OR updates.uid = '". $fid ."'";
}
我需要一个查询,将选择所有的更新与匹配的前一个数组。“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”中,如下所示:
array(1,3,7,21,45);
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 join语句不是很有经验。谢谢 我认为,如果要获取ids数组中指定用户的所有更新,最简单的方法是使用sql
JOIN
和in
子句
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;
我认为,如果要获取ids数组中指定用户的所有更新,最简单的方法是使用sql
JOIN
和in
子句
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;
试一试
试一试
试试这个
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." )";
登录用户的帮助不同….请尝试此操作
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." )";
登录用户的帮助不同…..COOKIE['id']包含什么内容?用户id?@Nouphal.M它只是保存登录的用户id,一个整数$\u COOKIE['id']保存什么?用户id?@Nouphal.M它只是保存登录的用户id,一个整数。这对我有效,但我必须将“on”添加到:
“更新时内部连接更新。uid=users.id”。
这对我有效,但我必须将“on”添加到:“更新时内部连接更新。uid=users.id”。