繁体   English   中英

将mysql查询结果存储在数组中,并在另一个查询中使用该数据

[英]Store mysql query result in array and use that data in another query

对数组有一个小问题,并且对SQL查询使用foreach技术。

我有两(2)个表: users_followers和表user_activiy

它们看起来像这样: Users_followers

+-----+----------+-------------+
| id  | user_id  | follower_id |
+-----+----------+-------------+

user_activity

+----+---------+---------+----------+----------+--------+
| id | user_id | post_id | activity | deleted  | status |
+----+---------+---------+----------+----------+--------+

我试图首先从用户关注的users_followers获取,然后从user_activity获取其“活动”是什么。

    public static function getActivityFromUsers()
    {
        $database = DatabaseFactory::getFactory()->getConnection();

        $sql = "SELECT user_id, follower_since_timestamp FROM users_followers where follower_id = :user_id";
        $query = $database->prepare($sql);
        $query->execute(array(':user_id' => Session::get('user_id')));

        $_MYSQL_DATA = array();

                if ($query->rowCount() <= 0) {
                    echo 'Nothing';
                }

    foreach($query->fetchAll() as $follows) {
    $new_data = new stdClass;
    $new_data->user_id = $follows->user_id;
    $new_data->follower_since_timestamp = $follows->follower_since_timestamp;
    $_MYSQL_DATA[] = $new_data;

        /*  
        $follows =  new stdClass;
        $_MYSQL_DATA['user_id'] = $follows->user_id;
        $_MYSQL_DATA['follower_since_timestamp'] = $follows->follower_since_timestamp;
        */
}
        /* $i=0;
        foreach($_MYSQL_DATA as $_MYSQL_DATA){ 
            echo var_dump($_MYSQL_DATA[$i]).'<br>';
                $i++;
        }  */
        echo var_dump($_MYSQL_DATA[user_id]).'<br>';



        $sql = "SELECT activity 
                FROM user_activity WHERE user_id = :user_id AND activity_timestamp BETWEEN :follower_since_timestamp AND now()";
        $query = $database->prepare($sql);
        $query->execute(array(':user_id' => $_MYSQL_DATA['user_id'],
                       ':follower_since_timestamp' => $_MYSQL_DATA['follower_since_timestamp']));

        $user = $query->fetchAll();

        if ($query->rowCount() < 0) {
            return false;
            } else {         

            $all_users_profiles = array();
            foreach ($user as $user) {
            $all_users_profiles[$user->activity] = new stdClass();
            $all_users_profiles[$user->activity]->activity = $user->activity;
        }

        return $all_users_profiles;      
    }
    }

我试图把我的头$_MYSQL_DATA[user_id]如何使用$_MYSQL_DATA[user_id]$_MYSQL_DATA[follower_since_timestamp]

预期结果应为:

  1. users_followers获取所有id和时间戳,其中follower_id对应于session(id)
  2. 根据第一个查询从users_activity获取所有数据。 注意between条款

(对var_dumps和代码中的其他故障排除感到抱歉)

我想我设法解决这个问题:

    public static function getActivityFromUsers()
    {
        $database = DatabaseFactory::getFactory()->getConnection();

        $sql = "SELECT user_id, follower_since_timestamp FROM users_followers where follower_id = :user_id";
        $query = $database->prepare($sql);
        $query->execute(array(':user_id' => Session::get('user_id')));


                if ($query->rowCount() <= 0) {
                    echo 'Nothing';
                    return false;
                }

$_MYSQL_DATA = $query->fetchAll();

        /* Just for my own testing and troubleshoot */
foreach ($_MYSQL_DATA as $row) {
    echo $row->user_id . "-" . $row->follower_since_timestamp ."<br/>";    
}
        echo var_dump($_MYSQL_DATA).'<br><br>';
        /* End for my own testing and troubleshoot*/



    foreach ($_MYSQL_DATA as $row) {
        $sql = "SELECT activity, user_id, activity_timestamp FROM user_activity WHERE user_id = :user_id";
        $query = $database->prepare($sql);
        $query->execute(array(':user_id' => $row->user_id));
        $result = $query->fetchAll();

        foreach ($result as $result){
            echo 'User_id: ' . $result->user_id.'<br>';
            echo 'What: ' . $result->activity .'<br>';
            echo 'When: ' . date('m/d/Y H:i:s', $result->activity_timestamp) .'<br>';
        }

echo '<br>';

        }

但是我不知道这是否是“最佳”方式,以及是否足够安全。

请查看并发表评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM