我有一个表,我必须使用MySQLi查询选择信息并将其推送到PHP数组的末尾。
表格采用以下格式:
table = friends
id user1 user1_id user2 user2_id datemade accepted
1 name1 1 name2 2 2015-05-27 03:24:32 1
2 name3 3 name2 2 2015-05-27 03:24:32 1
3 name3 3 name1 1 2015-05-27 03:24:32 1
4 name4 4 name2 2 2015-05-27 03:24:32 1
我想选择与$ u成为朋友的所有用户。 在此示例中,$ u的id为1(name为name1)。 运行查询后,它会将其推送到friend_array的末尾。
所以如果我打印这个数组,输出将是:
2, 3
因为,id = 1是id = 2且id = 3
的朋友我应该做什么查询以及如何将其推送到数组(我知道有关array_push但我不知道如何实现它)?
答案 0 :(得分:0)
请尝试此代码。它将为所有用户的朋友返回数组。
$sql = "SELECT user1 AS user FROM friends UNION SELECT user2 AS user FROM friends";
$data = mysqli_query($sql);
while ($v = mysqli_fetch_assoc($data)) {
$sql = mysqli_query("SELECT * FROM `friends` where (user1 = '" . $v['user'] . "' or user2 = '" . $v['user'] . "')");
$arr = array();
while ($array = mysqli_fetch_assoc($sql)) {
if ($array['user1'] == $v['user']) {
$arr[$v['user']][] = $array['user2_id'];
} else {
$arr[$v['user']][] = $array['user1_id'];
}
}
}
答案 1 :(得分:0)
我终于明白了!
$sql = "SELECT COUNT(id) FROM friends WHERE user1_id='$log_id' AND accepted='1' OR user2_id='$log_id' AND accepted='1'";
$query = mysqli_query($db_conx, $sql);
$query_count = mysqli_fetch_row($query);
$friend_count = $query_count[0];
//echo($friend_count); //how many friends
if($friend_count < 1){
echo($u." has no friends yet");
} else {
$all_friends = array();
$sql = "SELECT user1_id FROM friends WHERE user2_id='$log_id' AND accepted='1' ORDER BY RAND()";
$query = mysqli_query($db_conx, $sql);
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
array_push($all_friends, $row["user1_id"]);
}
$sql = "SELECT user2_id FROM friends WHERE user1_id='$log_id' AND accepted='1' ORDER BY RAND()";
$query = mysqli_query($db_conx, $sql);
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
array_push($all_friends, $row["user2_id"]);
}
$friendArrayCount = count($all_friends);
}
所以它首先要计算你有多少朋友要检查你是否有,如果你不是,那么。消息出现说没有朋友。如果你有一些朋友,它会运行一个查询来检查你的朋友是两个列 - user1_id和user2_id。然后它会最终将所有内容添加到$ all_friends数组中,然后计算你有多少朋友。 感谢所有帮助过的人!