Хорошо, это будет казаться глупым, однако, имея некоторые трудности в лучшем способе сделать это; Я пытаюсь захватить всех пользователей, за которыми следует учетная запись; то, как только я захватил всех пользователей, которых я следую из следующей таблицы, возьмите информацию о пользователе для таблицы пользователей. это то, что у меня есть до сих пор, но это действительно грязно и не работает.
<?
$usr_id = '34';
$sql = "SELECT * FROM following WHERE usr_id = '$usr_id'";
$result = mysql_query($sql);
// $following is the users that we are following.
while ($row = mysql_fetch_assoc($result)) {
$following = $row['following'];
$src = "SELECT * FROM usr_users WHERE username = '$following'";
$getfollowinginfo = mysql_query($src);
while ($user = mysql_fetch_assoc($getfollowinginfo)) {
echo $user['email'];
}}
?>
Как отмечают другие, здесь более подходящим является JOIN
. На основе вашего примера, вот простой скрипт SQL, показывающий, как он работает.
Самая важная часть - таргетинг на Following
таблицу, а затем JOIN
ing в таблицу Users
, например:
SELECT u.id, u.name
FROM Following f
JOIN Users u on u.id=f.following
WHERE f.userId = 3 -- Can be any identifier for the user.
Для небольших или простых наборов данных это прекрасно, но некоторые могут предложить вам удалить WHERE
и вместо этого расширить условие JOIN, например:
SELECT u.id, u.name
FROM Following f
JOIN Users u on u.id=f.following
AND f.userId = 3 -- Can be any identifier for the user.
Чтобы интегрировать это в ваш код, это так же просто, как это;
<?
$usr_id = '34';
$sql = "SELECT u.id, u.email FROM following f JOIN usr_users u on u.id=f.following AND f.usr_id = '$usr_id'";
$result = mysql_query($sql);
while ($user = mysql_fetch_assoc($result )) {
echo $user['email'];
}
?>