Проверьте, существуют ли уже дружеские отношения - PullRequest
0 голосов
/ 10 января 2010

Почему этот код не работает? Я хочу проверить, являются ли пользователи уже друзьями, прежде чем я добавлю.

function addFriend() 
{
    global $userid, $friendid;
    $check = mysql_query("SELECT * FROM friends WHERE userid = $userid AND friendid = $friendid");  
    if (mysql_num_rows($check) == 1)
    {
        exit("Youre already friend with this user");
    } 
    else 
    {
        $sql = "INSERT INTO friends (userid, friendid) VALUES ($userid, $friendid)";
        mysql_query($sql);

        if ($sql)
             echo "Success";
        else 
             echo "Failure";
    }
}

Ответы [ 5 ]

1 голос
/ 10 января 2010

Это может не отвечать на ваш вопрос, но $sql никогда не будет ложным, так как вы установили его на 3 строки выше.

Возможно, вы захотите изменить mysql_num_rows($check) == 1 на mysql_num_rows($check) >= 1, если в вашей базе данных нет уникальных констант в парах полей.

0 голосов
/ 10 января 2010

Как сказал Майк Б выше, $sql никогда не будет ложным, поскольку вы задаете его для запроса. Вам нужно установить результат запроса в переменную, а затем проверить, что:

$result = mysql_query($sql);
if ($result)
    echo "Success";
else 
    echo "Failure";
}
0 голосов
/ 10 января 2010

Вы тоже пытались включить обратную ситуацию в свой запрос? Я полагаю, что таблица друзей обозначает, кто дружит с кем в порядке запроса. Так что, если я буду просить вас как друга, я буду пользователем, но если вы попросите меня, я буду идентификатором друга. Поэтому вам также необходимо проверить, где userid = $ friendid и friendid = $ userid.

Может ли это быть? Трудно сказать по вашему вопросу, в чем именно заключается проблема.

ПРИМЕЧАНИЕ. Я не эксперт по PHP, поэтому я отвечаю строго на API Facebook, а не на сам PHP. Просто констатирую перед тем, как я получу понижение в должности: -)

0 голосов
/ 10 января 2010

исправил

не было auto_increcement в таблице друзей

0 голосов
/ 10 января 2010

Изменение:

$sql = "INSERT INTO friends (userid, friendid) VALUES ($userid, $friendid)";
mysql_query($sql);
if ($sql)
  echo "Success";
else 
  echo "Failure";
}

до:

$sql = "INSERT INTO friends (userid, friendid) VALUES ($userid, $friendid)";
mysql_query($sql);
if (mysql_affected_rows()) {
  echo "Success";
else 
  echo "Failure";
}

См. mysql_affected_rows().

Ваша первая версия всегда будет возвращать успех, так как вы проверяете, что $sql пусто или нет, и это не потому, что вы просто присвоили ему непустое значение (являющееся SQL для запроса).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...