Как сначала получить разные связанные значения из разных таблиц SQL (PHP) - PullRequest
0 голосов
/ 16 марта 2010

Я триг, чтобы заполнить список опций. У меня есть 2 таблицы USERS и STREAMS. Я хочу получить все потоки и получить имена пользователей, назначенных этим потокам.

Пользователи состоят из имени пользователя и идентификатора

Потоки состоят из id, userID, streamID

Я пробую такой код:

<?php           
        global $connection;
        $query = "SELECT * 
        FROM streams ";
        $streams_set = mysql_query($query, $connection);
        confirm_query($streams_set);    
    $streams_count = mysql_num_rows($streams_set);
    while ($row = mysql_fetch_array($streams_set)){
            $userid = $row['userID'];
                global $connection;
        $query2 = "SELECT email, username ";
        $query2 .= "FROM users ";
        $query2 .= "WHERE id = '{$userid}' ";

        $qs = mysql_query($query2, $connection);
        confirm_query($qs); 
        $found_user = mysql_fetch_array($qs);


 echo ' <option value="'.$row['streamID'].'">'.$row['userID'].$found_user.'</option> ';
}
    ?>

Но он не возвращает имена ПОЛЬЗОВАТЕЛЕЙ из DB = (Так что мне делать с этим кодом, чтобы видеть имена пользователей в виде текста "options"?

1 Ответ

2 голосов
/ 16 марта 2010

Вы можете сделать это с помощью одного запроса, содержащего JOIN на streams.userID = users.id

$query = "
  SELECT
    s.streamId,
    s.userId,
    u.username
  FROM
    streams as s
  JOIN
    users as u
  ON
    s.userId=u.id
  ";
$result = mysql_query($query, $connection);
confirm_query($result);
echo '<option value="">Debug: #rows=', mysql_num_rows($row), '"</option>';

while ( false!==($row=mysql_fetch_array($result)) ) {
  sprintf('<option value="%s">id:%s name:%s</option>',
    $row['streamID'], // you probably should apply htmlspecialchars()
    $row['userID'], // on these two, too.
    htmlspecialchars($row['username'])
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...