0

我有这个查询:

function find_Friends($UserID){
    $mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
    if (!$mysqli) {
        die('There was a problem connecting to the database.');
    }
    $query="SELECT * FROM Friends WHERE UserID = '$UserID' OR FriendID = '$UserID'";
    $result = $mysqli->query($query);
    //List all relevant
    while($row = $result->fetch_row()) {
       //Do logic   
    }
    $mysqli->close();
}

所以假设查询是这样的:

SELECT * FROM Friends WHERE UserID = '123' OR FriendID = '123'

我的查询返回以下内容:

UserID | FriendID
123    |  456

我的问题是,如何在 php 中返回 FriendID 456?我基本上只想返回不是查询数字的列,在本例中为 123。

因此,如果我正在寻找 8434 并且我得到了以下回报:

UserID | FriendID
2356   | 8434

我想返回 UserID,而不是 FriendID,但在原始查询中我想返回 FriendID。

我将如何在 php/mysql 中执行此操作?

4

3 回答 3

1

如果您只关心数字而不关心它是哪一列,您可以将查询更改为:

SELECT IF(UserID='123',FriendID,UserID) AS Number FROM Friends WHERE UserID = '123' OR FriendID = '123'

或者,如果您确实关心它是哪一个,则保持查询字符串原样并应用此 PHP:

while ($row = $result->fetch_row()) {
    if ($row['UserID'] == $UserID) {
        echo "Friend ID: " . $row['FriendID'];
    } else {
        echo "User ID: " . $row['UserID'];
    }
}
于 2013-03-18T03:59:06.183 回答
0

使用这个逻辑

while($row = $result->fetch_row()) {
   if($row['UserID'] == $UserID)
   {
        echo $row['FriendID'];
   } else {
        echo $row['UserID'];
   }
}
于 2013-03-18T03:57:28.067 回答
0

只是UNION双方,提出您的查询:

SELECT FriendId
FROM Friends
WHERE UserId = @UserId
UNION ALL
SELECT UserId AS FriendId
FROM Friends
WHERE FriendId = @UserId

这将返回一个简单列表中的所有朋友@UserId和所有用户。@UserId

于 2013-03-18T03:57:31.207 回答