这样运行正常且没有错误,它应该从登录的用户朋友返回评论。此代码不显示任何注释。我的数据库有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;
}
我希望这足以让我们了解正在发生的事情。非常感谢帮助。
表定义:
答案 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并不难,这将允许某人直接访问其他人的帐户。