2010-01-10 5 views
-1

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

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"; 
    } 
} 

ответ

1

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

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

0

Изменение:

$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 для запроса).

-1

фик его

не имели какой-либо auto_increcement в друзья таблице

0

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

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

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

0

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

$result = mysql_query($sql); 
if ($result) 
    echo "Success"; 
else 
    echo "Failure"; 
} 
Смежные вопросы