我有一个返回朋友列表的函数,唯一的问题是我想从wallfriends.mem_id_from或wallfriends.mem_id_to进行数组推送,具体取决于哪个不是$ user_id。

要么

我可以用SQL完成所有操作吗?

有谁知道我会怎么做呢?在此先感谢您的帮助。

function returnFreinds($user_id)
{
    $recget = mysql_query("
    SELECT * FROM wallusers
    INNER JOIN wallfriends ON wallusers.mem_id = ".( $user_id == "wallfriends.mem_id_to"?"wallfriends.mem_id_from":"wallfriends.mem_id_to")."
    WHERE ((wallfriends.mem_id_from =".$user_id.") OR (wallfriends.mem_id_to =".$user_id.")) AND wallfriends.confirm=1
    ");

    $friends_list = array();

    if (@mysql_num_rows($recget))
    {
        while ($named = @mysql_fetch_array($recget))
        {
            array_push($friends_list, $named['mem_id']);
        }

        $matches = implode(',', $friends_list);
    }
    else
        $matches = 0;
    return $matches;
}

最佳答案

根据我对您的问题的理解,您可以像构造SQL查询时一样使用push进行区分。

while ($named = mysql_fetch_array($recget))
{
    array_push($friends_list,
               empty($named['mem_id_to']) ? $named['mem_id_from'] : $named['mem_id_to']
    );
}


另外,建议不要使用@运算符抑制错误。

10-07 20:39