消息发布PHP和SQL

时间:2011-11-12 20:15:04

标签: php sql cookies

这样运行正常且没有错误,它应该从登录的用户朋友返回评论。此代码不显示任何注释。我的数据库有4个字段; user1,user2,active和id。 User1是请求成为朋友的用户,user2是接受它的用户。如果友谊正在等待或“活跃”,则激活。 ID是友谊ID,从1开始并自动递增。使用cookie检索用户的id。这是我到目前为止的代码:

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 个答案:

答案 0 :(得分:1)

这一行:

mysql_select_db("$db_name")

应该是:

mysql_select_db("$db_name", $link)

这些行没有做任何事情,因为$ result从未使用过:

$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 Query Browser中运行它们。它将帮助您调试SQL。

我还认为你应该小心直接从cookie中获取用户ID。欺骗cookie并不难,这将允许某人直接访问其他人的帐户。