Я получаю кучу идентификаторов из базы данных - для каждого идентификатора я хочу сделать запрос mysql, чтобы связать строку в другой таблице. Это прекрасно работает, хотя мне также необходимо получить аналогичные данные для зарегистрированного пользователя. С запросом mysql, который я использую, он дублирует зарегистрированные данные пользователя в зависимости от того, сколько идентификаторов было изначально вытащено. Это имеет смысл, хотя это не то, что я хочу. Я не хочу дублировать данные для зарегистрированного пользователя, и мне нужно, чтобы данные поступали из одного запроса, поэтому я могу заказать вещи с меткой времени.Дубликаты в php while loop
<?php
mysql_select_db($database_runner, $runner);
$query_friends_status = "SELECT DISTINCT rel2 FROM friends WHERE rel1 = '" . $_SESSION ['logged_in_user'] . "'";
$friends_status = mysql_query($query_friends_status, $runner) or die(mysql_error());
$totalRows_friends_status = mysql_num_rows($friends_status);
while($row_friends_status = mysql_fetch_assoc($friends_status))
{
$friends_id = $row_friends_status['rel2'];
mysql_select_db($database_runner, $runner);
$query_activity = "SELECT * FROM activity WHERE user_id = '$friends_id' OR user_id = '" . $_SESSION['logged_in_user'] . "' ORDER BY `timestamp` DESC LIMIT 15";
$activity = mysql_query($query_activity, $runner) or die(mysql_error());
$totalRows_activity = mysql_num_rows($activity);
echo "stuff here";
}
?>
Использование функций php mysql_ не рекомендуется, ознакомьтесь с функциями mysqli_, это новый, более быстрый и безопасный способ выполнения запросов mysql в php. –
Вероятно, вы должны использовать оператор JOIN, вероятно, вы также должны использовать mysqli или PDO, а не mysql_ *. –
Ваш код также страдает от проблемы [N + 1] (http://stackoverflow.com/questions/97197/what-is-the-n1-selects-problem). –