【问题标题】:Get information from MySql Query and put it in PHP array从 MySql Query 中获取信息并将其放入 PHP 数组中
【发布时间】:2015-08-12 07:27:09
【问题描述】:

我有一个表,我必须使用 MySQLi Query 选择其中的信息并将其推送到 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 = 用于跟踪所有内容的自动递增数字
  • user1 = 请求友谊的人的名字
  • user1_id = 该人的特殊唯一 ID
  • user2 = 接受/拒绝友谊的人的姓名
  • user2_id = 该人的特殊唯一 ID
  • datemade = 制作日期:P
  • 接受 = 他接受了吗? (不用担心)

我想选择所有与 $u 成为朋友的用户。 在本例中,$u 的 id 为 1(名称为 name1)。 运行查询后,它将把它推到friend_array的末尾。

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

2, 3

因为 id=1 是 id=2 和 id=3 的朋友

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

【问题讨论】:

  • 欢迎来到 Stack Overflow!这个问题的信息有点少。能分享一下你尝试过的,遇到了什么问题吗?
  • 您是否考虑过规范化您的表格?有一个 users 和 friends 表分别与 user.id 和 friends.user_id1 和 friends.user_id2 的外键关系?
  • @JayBlanchard 我试过了,这个查询 'SELECT id, user2_id FROM $friends WHERE user_id = '$user_id'' 但我不知道如何使用它以及它返回什么。
  • SELECT id, user2_id FROM 只会返回 id 和 user2_id 中的值。因为您已经告诉它将结果过滤到这两列!

标签: php mysql arrays database mysqli


【解决方案1】:

请尝试此代码。它将返回所有用户朋友的数组。

$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'];
    }
  }
}

【讨论】:

  • 不要使用`mysql_*扩展功能,PHP 5.5版本已正式弃用
  • 我不同意这一点...它使用 UNION... 这意味着它可能可以以更好的方式重写。
【解决方案2】:

我终于明白了!

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

【讨论】:

    猜你喜欢
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    相关资源
    最近更新 更多