2011-11-12 79 views
0

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

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

这条线:

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获取用户ID。欺骗cookie并不难,这将允许某人直接访问他人的帐户。

+0

非常有帮助!将强烈考虑cookie建议,并将重新设计这部分项目。再次感谢! – Sneitzke38