我有一个系统,PHP脚本使用MySQL根据用户获取信息。然后,根据该信息,将显示某个按钮。被调用的数据库有列:
id
user_one
user_two
这是为了检查两个用户是否是朋友。但是,我的问题是,如果用户拥有更多的1位朋友,则该脚本仅适用于第一位朋友。
$select_friends_query = mysql_query("SELECT friend_id FROM friends WHERE user_id = '$user'");
while($friend_row = mysql_fetch_assoc($select_friends_query)) {
$friend = $friend_row['friend_id'];
}
if ($username == $friend) {
$addAsFriend = '<input type="submit" class = "frnd_req" name="removefriend" value="Disassociate">';
}
else
{
$addAsFriend = '<input type = "submit" class = "frnd_req" name = "addfriend" value = "Send Associate Request">';
}
}
}
然后我echo $addAsFriend
了。
答案 0 :(得分:0)
我建议您按如下方式更改数据库设计:
User_id, PK
Friend_id, PK
PK =主键。主键是存储记录的键。它必须是独一无二的。我们将它作为COMPOUND主键(两个字段组成PK而不是1)的原因是因为用户不可能多次与同一用户成为朋友。 Mysql将确保不会发生这种情况,您不必在应用程序级别上执行此操作。
因此,如果用户&#34; 12&#34;和用户&#34; 25&#34;成为朋友你应该有两个记录:
(12,25)和(25,12)
你必须有两条记录,因为数据意味着字面意思&#34;用户这就是朋友。&#34;两个用户是否有可能拥有单向友谊 - 不是真的,但是您可能希望有一天扩展此表以包含两个朋友之间关系类型的偏好,并且您希望区分A - &gt; B和B - &gt;关系。
所以,让我们来解决问题。要查询mysql以查找特定用户的所有朋友,我们执行以下操作:
$sql = "SELECT friend_id FROM friends WHERE user_id = 25;";
$query = mysql_query($sql, $connection);
// Loop through all friend records
while ($row = mysql_fetch_assoc($query)) {
$friends[$row['friend']];
}
我没有使用过程代码(mysql_query)而是使用mysqli和OP:$ mysql-&gt; query()。基本上,我不是100%确定这段代码是否会运行,但它会为您提供入门指南。
在节目结束时,你将有一个阵列&#34;朋友&#34;用钥匙告诉你朋友的ids。所以&#34;朋友&#34; - &GT; 12,21可能是潜在的数据集。
答案 1 :(得分:-1)
你必须查看所有结果。与http://www.php.net/manual/en/function.mysql-fetch-assoc.php
中的while循环示例类似