簡體   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