我正在做一个朋友列表类型的功能,将显示用户的朋友,我有一些逻辑问题。存储朋友的表格的设置方式有3列, userid1,userid2和friendstatus。好友状态1表示用户是朋友,状态0表示请求正在等待。当用户添加另一个用户作为他们的朋友时,发送请求的用户被放置在userid1中,并且接收请求的用户被放置在userid2中。PHP循环逻辑麻烦
所以,我遇到的问题是获取功能来正确选择用户的朋友,而不是用户本人。基本上,我试图让这个函数来确定哪个列是用户(例如我)和哪一列是朋友。
我最初有第一个SQL语句如下,但这也没有工作。
$friends = mysql_query("Select * from friends where (userid1 = $myUsername OR userid2=$myUsername) AND friendstatus = '1'");
下面是我试图创建的逻辑。
- 获取用户ID(矿)
- 搜索我的ID列1:如果找到,显示第2列(这将是我的朋友)
- 我的ID搜索栏2:如果找到,显示栏1 (这将是我的朋友)
函数friendslookup只是显示信息并提取用户的信息。它不会增加逻辑。
$myUsername = $_GET['myFriends'];
if(isset($myUsername)){
$friends = mysql_query("Select * from friends where userid1 = $myUsername AND friendstatus = '1'");
$friends2 = mysql_query("Select * from friends where userid2 = $myUsername AND friendstatus = '1'");
if(mysql_num_rows($friends) > 0 OR mysql_num_rows($friends2) >0) {
echo '<table><tr><td>Username </td><td> Location</td></tr>';
$col1rows = mysql_num_rows($friends);
$col2rows = mysql_num_rows($friends2);
}
for ($i=0; $i<$col1rows;$i++){
$myFriends = mysql_query("Select * from friends where userid1 = $myUsername AND friendstatus = '1'");
$friend = mysql_fetch_array($myFriends);
$friend_1 = $friend['userid2'];
friendsLookup($friend_1,$myUsername);
}
for ($i=0; $i<$col2rows;$i++){
$myFriends_2 = mysql_query("Select * from friends where userid2 = $myUsername AND friendstatus = '1'");
$friend = mysql_fetch_array($myFriends_2);
$friend_2 = $friend['userid1'];
friendsLookup($friend_2,$myUsername);
}
}
太棒了,完美的工作! – user1104854 2012-02-02 02:28:37
请不要忘记用mysql_real_escape_string来清理$ myUsername变量!此代码易受SQL注入攻击。 – mpratt 2012-02-02 02:36:07