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

FriendID ではなく UserID を返したいのですが、元のクエリでは 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これにより、 のすべての友達と、 の友達であるすべてのユーザーが@UserId1 つの単純なリストに返されます。

于 2013-03-18T03:57:31.207 に答える