2010-03-15 59 views
0

我是triig來填充選項列表。我有2個表USERS和STREAMS我想要獲取所有流並獲取分配給這些流的用戶名稱。如何首先從不同的SQL表格獲取不同的相關值(PHP)

用戶包括用戶名和ID

流由ID,用戶ID的,流ID

我嘗試這樣的代碼:

<?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 =(所以返回用戶名我該怎麼做這個代碼來看用戶名爲「選項」文本?

+0

只要確定要做什麼:每個用戶只能在一個流上? – VolkerK 2010-03-15 23:49:23

+0

你的代碼中有一個無限循環。如果你想讓while語句成爲你想要的循環,你應該把它寫成@VolkerK。 – Young 2010-03-16 00:13:32

+0

@SpawnCxy:雖然我鼓勵人們像我一樣寫循環條件,但它應該像Ole寫的那樣按預期工作。 – VolkerK 2010-03-16 08:32:04

回答

2

你可以做一個包含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']) 
); 
} 
+0

順便說一句,在你的代碼中有一些關於beeg或small leters的錯誤(s.streamId - > $ row ['streamID']) – Rella 2010-03-17 01:31:24

+0

大多數時候我測試我發佈的代碼,有時候不會......在這種情況下;-)抱歉。 – VolkerK 2010-03-17 12:35:13

相關問題