Публикация сообщений PHP и SQL - PullRequest
0 голосов
/ 13 ноября 2011

Работает нормально, без ошибок и должен возвращать комментарий от зарегистрированных пользователей друзей.Этот код не отображает никаких комментариев.Моя база данных имеет 4 поля;user1, user2, active и id.Пользователь1 - это пользователь, который запрашивает дружбу, а пользователь2 - это пользователь, который его принимает.Активен, если дружба ожидающая или «активная».Идентификатор - это идентификатор дружбы, который начинается с единицы и автоматически увеличивается.Идентификатор пользователя извлекается с помощью куки.Вот код, который у меня есть:

public function Updates($uid) 
{
    $host="localhost"; 
    $username="username"; 
    $password="password"; 
    $db_name="members"; 
    $tbl_name="friends";

    $user1=$_COOKIE["ID"];

    $link  = mysql_connect("$host", "$username", "$password")or die("Cannot connect. Please contact us");
    mysql_select_db("$db_name")or die("Cannot select database. Please contact us");
    $sql="SELECT * FROM $tbl_name WHERE user1 =$user1";
    $result=mysql_query($sql, $link) or die ('Unable to run query:'.mysql_error());

    $query = mysql_query("
           SELECT
            M.msg_id,
            M.uid_fk, 
            M.message, 
            M.created,
            U.Firstname,
            U.Lastname
            FROM messages M
            JOIN users U ON U.UID = M.uid_fk
            JOIN friends F ON M.uid_fk = F.user2
            WHERE F.user1 = '$user1'
            ORDER BY M.created desc
        ") or die(mysql_error());
     while($row=mysql_fetch_array($query))
     $data[]=$row;
    return $data;
}

Надеюсь, этого достаточно, чтобы понять, что происходит.Помощь очень ценится.

Таблица определений:

Database

1 Ответ

1 голос
/ 13 ноября 2011

Эта строка:

mysql_select_db("$db_name")

Должно быть:

mysql_select_db("$db_name", $link)

И эти строки ничего не делают, так как результат $ никогда не используется:

$sql="SELECT * FROM $tbl_name WHERE user1 =$user1";
$result=mysql_query($sql, $link) or die ('Unable to run query:'.mysql_error());

Наконец, U.UID должно быть U.uid. Я уверен, что MySQL чувствителен к регистру.

Если у вас все еще есть проблемы с вашими запросами, запустите их прямо в браузере запросов MySQL. Это поможет вам отладить ваш SQL.

Я также думаю, что вы должны быть осторожны при получении идентификатора пользователя непосредственно из файла cookie. Нетрудно подделать cookie-файл, который позволит кому-то получить прямой доступ к чужому аккаунту.

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