[英]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]
。
預期結果應為:
users_followers
獲取所有id和時間戳,其中follower_id對應於session(id) 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.