从MySql Query获取信息并将其放入PHP数组中

时间:2015-05-29 12:17:14

标签: php mysql arrays database mysqli

我有一个表,我必须使用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
  • id =跟踪所有内容的auto_incrementing数字
  • user1 =要求友谊的人名
  • user1_id =该人的特殊唯一ID
  • user2 =接受/拒绝友谊的人的姓名
  • user2_id =该人的特殊唯一ID
  • datemade =制作日期:P
  • 接受=他接受了吗? (别担心这个)

我想选择与$ u成为朋友的所有用户。 在此示例中,$ u的id为1(name为name1)。 运行查询后,它会将其推送到friend_array的末尾。

所以如果我打印这个数组,输出将是:

2, 3

因为,id = 1是id = 2且id = 3

的朋友

我应该做什么查询以及如何将其推送到数组(我知道有关array_push但我不知道如何实现它)?

2 个答案:

答案 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数组中,然后计算你有多少朋友。 感谢所有帮助过的人!